使用无Cookie的Session状态

默认情况下,Session状态依赖Cookie,ASP.NET Framework利用ASP.NET_SessionId这个Cookie来识别跨页面请求的用户,

这样正确的数据就能关联到正确的用户。如果浏览器中禁用了Cookie,Session状态就不能工作了。

 

如果希望cookie被禁用时,Session状态还是能工作,就应该使用无Cookie的会话。当启用无Cookie的会话时,用户的会话ID 添加到页面的URL中。

可以修改Web配置文件的sessionState元素,启用无Cookie的会话。sessionState元素包含一个cookieless特性,

它接受下面的值:

 

 


 

AutoDetect             当浏览器启用cookie时,会话ID保存在cookie中,否则,会话ID添加到URL。

UseCookies             会话ID总是被存于cookie(默认值)

UseDeviceProfile       当浏览器支持cookie时,会话ID存于cookie,否则,会话ID添加到URL

UseUri                 会话ID总是添加到URL。

 

当设置cookieless的值为UseDeviceProfile时,ASP.NET Framework 通过位于下面文件夹的一组文件查询浏览器是否支持cookie

C:\WINDOWS\Microsoft.NET\Framework\v2.050727\Config\Browsers

根据这些文件,如果浏览器支持cookie,则使用cookie存储会话ID。即使浏览器禁用了cookie,框架还是会试图添加cookie。

 

当cookiesless被设置为AutoDetect时,框架检查HTTP cookie 头部是否存在。如果cookie头部被检测到,则框架在cookie中存储会话ID,

否则,将会话ID添加到页面URL中。

 

以下例子 在Web配置文件中给cookieless特性设置了值AutoDetect,以启用无cookie的会话

<configuration>

        <system.web>

               <sessionStatcookieless="AutoDetect"regenerateExpiredSessionId="true"/>

        <system.web>

</configuratio>

 

注意:上述代码中还包含了一个regenerateExpiredSessionId特性。当启用无cookie的会话状态时,就应该启用该特性,因为它能帮助用户避免不小心共享Session状态。

 

当启用无cookie的会话,并在用用程序的页面间连接时,需要注意尽量使用相对URL。否则,会话ID不能自动添加到URL。

 

例如:  尽量使用 /Home/Page.aspx

        不要用用 http://xxxx/Home/Page.aspx

如果出于某些原因需要使用觉得URL,则使用Response.ApplyAppPathModifier()方法添加会话ID到URL。该方法接受一个绝对URL,返回一个嵌入了会话ID的URL。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安得权

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值