您现在的位置: 无忧电子商务网 >> 信息学院 >> 程序开发 >> asp.net >> 正文

在 ASP.NET 中实现会话状态的基础

作者:作者:未…    信息学院来源:网络收集    点击数:    更新时间:2006-8-28 我要参与讨论

  okieless="true" />
</system.web>
</configuration>

此时,假设您请求以下 URL 处的页面:

http://www.contoso.com/sample.aspx

浏览器地址栏中实际显示的内容会有所不同,现在包含会话 ID,如下所示:

http://www.contoso.com/(5ylg0455mrvws1uz5mmaau45)/sample.aspx

实例化会话状态 HTTP 模块时,该模块将检查 Cookieless 特性的值。如果为 true,则将请求重定向 (HTTP 302) 到经过修改的包含会话 ID(紧跟在页面名称前)的虚拟 URL。再次处理请求时,请求中会包含该会话 ID。如果请求启动新的会话,HTTP 模块将生成新的会话 ID,然后重定向该请求。如果回传请求,则会话 ID 已经存在,因为回传使用相对 URL。

使用 Cookieless 会话的缺点是,如果调用绝对 URL,将丢失会话状态。使用 Cookie 时,您可以清除地址栏,转至其他应用程序,然后返回上一个应用程序并检索相同的会话值。如果在禁用会话 Cookie 时执行此操作,将丢失会话数据。例如,以下代码将打断该会话:

<a runat="server" href="/code/page.aspx">Click</a>

如果需要使用绝对 URL,请通过一些小技巧手动将会话 ID 添加到 URL 中。您可以对 HttpResponse 类调用 ApplyAppPathModifier 方法。

<a runat="server"
href=<% =Response.ApplyAppPathModifier("/code/page.aspx")%> >Click</a>

ApplyAppPathModifier 方法将使用表示 URL 的字符串,并返回嵌入会话信息的绝对 URL。例如,需要从 HTTP 页面重定向到 HTTPS 页面时,此技巧特别有用。

小结
会话状态最初由传统的 ASP 引入,它是基于词典的 API,使开发人员能够存储会话期间的自定义数据。在 ASP.NET 中,会话状态支持以下两种主要功能:Cookieless 会话 ID 存储和传输,以及会话数据实际存储的状态提供程序。为实现这两种新功能,ASP.NET 利用 HTTP 模块控制会话状态与正在处理的请求上下文之间的绑定。

在传统的 ASP 中,使用会话状态就是指使用 Cookie。在 ASP.NET 中已不再如此,因为可以使用 Cookieless 架构。借助 HTTP 模块的力量,可以分解请求的 URL 以使其包含会话 ID,然后将其重定向。接下来,HTTP 模块会从该 URL 中提取会话 ID 并使用它检索任何存储的状态。

会话的物理状态可以存储在三个位置:进程内内存、进程外内存和 SQL Server 表。数据必须经过序列化/反序列化处理,才能供应用程序使用。HTTP 模块会在请求开始时将会话值从提供程序复制到应用程序的内存中。请求完成后,修改后的状态将返回提供程序。这种数据通信会对性能产生不同程度的不利影响,但是会大大增强可靠性和稳定性,也使对 Web Farm 和 Web Garden 体系结构的支持更容易实现。


上一页  [1] [2] [3] [4] [5] 

在google里搜索更多在 ASP.NET 中实现会话状态的基础

Google
Web www.51ec.org
【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
我来说两句 对此文章发表了评论
  昵 称: *必填    ·注册用户·
  评 分: 1分 2分 3分 4分 5分     严禁发表危害国家安全、政治、黄色淫秽等内容的评论,用户需对自己在使用本网站服务过程中的行为承担法律责任。本站管理员有权保留或删除评论内容,评论内容只代表机友个人观点,与本网站立场无关。  
评 论
内 容

 
评论列表 (最新 评论仅限网友观点!)

供求信息




| 设为首页 | 加入收藏 | 关于我们 | 广告服务 | 联系方式 | 友情链接 | 版权申明