• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Asp.Net编程中,用户状态维护的几种方法

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
       下面对维持用户状态作简单的描述,如果要深入描述,写一本专业书籍也不过分,其中的使用技巧,需要在实践中获取。

Asp.Net 编程依赖Http协议,而Http协议本身是无状态的,如果要维护用户的状态,那么要采用一些技术方法,根据不同的状况,可以使用不同的方法。

维持用户状态的方法,如下:
查询字符串:在用户访问Web的地址中加入查询字符,可以标记用户状态,因为查询字符是可见的,所以不要用来存储密码等敏感信息;只要提供正确的查询字符,随时有效。
Cookies:可以在用户端存储少量的信息,但是浏览器可能不支持,或者关闭了此功能,所以使用前,要检测客户浏览器是否支持,才可以使用;Cookie的有效期可以设置,几分钟、几天、几月不等,可以根据需要,在未过期前,访问Web站点都是可用的。
ViewState:在Page页面使用ViewState属性存储变量,因为ViewState在Client-Server请求中传输,所以存储的变量不宜过多,否则会影响性能;另外,存储的变量是页面级的,只在本页面有效。
Session:在Server端存储当前用户定义的变量,要分辨用户,要使用Cookie或者查询字符来标记用户,另外,存储的用户变量要占用系统资源,可以根据配置,选择Session变量存储的位置,如本级,或者其他机器。作用范围是整个会话过程。
Application:用来存储整个Web站点的全局变量,对所有访问用户有效。作用范围是整个Web。

使用查询字符:
格式如webform1.aspx?name=user,使用方法Response.Redirect来实现:
private void Button1_Click(object sender, System.EventArgs e)
}

客户端可以使用QueryString方法来解析查询字符:
private void Page_Load(object sender, System.EventArgs e)
}

使用Cookie:
Cookie适合在客户端存储少量的数据,用来标示用户的特定信息,如姓名,爱好等等;因为浏览器可以不支持Cookie,所以使用时,应该先检测客户是否支持cookie:
private void Page_Load(object sender, System.EventArgs e)
}

下面代码可以检查请求是否包含cookie,如果有,那么获取cookie的值:
private void Page_Load(object sender, System.EventArgs e)
}

使用ViewState:
使用ViewState存储变量,是把变量以隐藏字段的形式放在页面中,同时要求变量可以别序列化,如果要存储复杂的变量,那么需要先把变量转换为字符串。
下面的代码是把TextBox中的文本加入到页面的Table中的Cell。
private void Button1_Click(object sender, System.EventArgs e)
}

使用Application和Session:
使用Application和Session可以存储任何类型的对象,Scope在整个的WebApplication或者整个Session。
注意以下几点:
Application和Session建立对象时不做名称和类型检查,这部分工作需要开发者来做;
维持Session影响性能,可以在Application或者Page Level来关闭此功能;
Application建立的对象,只在当前进程有效,对于多进程或者多Web Application,每个Application维持自己的对象,不相互影响;
Session对象,依赖前面讲的Cookie或者QueryString来标示用户,需要知道存储的信息是哪个用户的,一般是采用生成SessionID,通过Cookie发给用户,用户访问时,在Cookie中提供这个SessionID,说明身份。

使用简单,但是容易出错,如:

Application["Uname"= "Wombat";
Response.Write(Application[
"Unamme"]);

为了避免这种状况,最简单的办法是建立一个页面的变量,在Page_Load事件中获取Application变量,然后作其他处理,最后在Page_UnLoad中更新Application变量的值。
string mstrUname = "";
private void Page_Load(object sender, System.EventArgs e)
}

不知道除了这些方法外,还有没有其他维持状态的办法。

参考:
Develop Web Applications with visual Basic.net and visual C#.net
Copyright 2002

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
ASP.NET中回车遍历TextBox并提交发布时间:2022-07-10
下一篇:
ASP.NET状态服务和session丢失问题解决方案发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap