asp.net的Cookieless(使用url共享session,同j2ee jsessionid)

管理员.JACKY 写道
12:06:56
请各位测一下,多刷几次,看SESSION ID有没有变化?
怎么解决呢?

 

sessionid是放在cookie中的
客户端没有在后续请求提交上次请求保存的sessionid
解决办法,在web配置文件中,设置cookieless

IE6的一个补丁可能会引起这个问题:http://support.microsoft.com/default.aspx?scid=kb;EN-US;q316112

 

SessionStateSection.Cookieless 属性

HttpCookieMode值之一。默认值为 false,即使用 Cookie。
 备注
唯一 ID 将客户端与服务器会话关联起来,会话状态存储该唯一 ID 的方式有两种:一是在客户端上存储 HTTP Cookie;二是在 URL 中编码会话 ID。将会话 ID 存储在 Cookie 中更为安全,但需要客户端浏览器支持 Cookie。对于允许不支持 Cookie 的客户端的应用程序(例如各种移动设备),可将会话 ID 存储在 URL 中。使用 URL 存在一些缺点。它要求站点上的链接是相对链接,并要求在会话开始时使用新查询字符串值对页进行重定向,而会话 ID 会在查询字符串中公开,因此可能被抽取出来用于实施安全攻击。建议您仅在需要支持缺少 Cookie 支持的客户端时,才使用无 Cookie 模式。会话状态还支持另外两个选项:UseDeviceProfile和AutoDetect。前者使得会话状态模块可基于浏览器功能确定每个客户端使用的模式(Cookie 或无 Cookie)。AutoDetect选项执行一次与浏览器之间的握手,以验证是否可存储 Cookie,因此需要一次附加请求来进行确认。如果您需要支持无 Cookie 客户端,强烈建议您使用UseDeviceProfile仅为需要无 Cookie URL 的客户端生成无 Cookie URL。

下面的代码示例在 Web.config 文件中将 sessionState 元素(ASP.NET 设置架构) 元素的 cookieless 属性 (Attribute) 设置为 true,以便更改 CookieMode 属性 (Property)。对于此示例应用程序配置,CookieMode 属性将返回 UseUri。

复制代码 
<configuration>
  <system.web>
    <sessionState
      mode="InProc"
      cookieless="true"
      timeout="30" />
  </system.web>
</configuration>

详细的配置参数说明:
http://msdn.microsoft.com/zh-cn/library/h6bb9cz9.aspx


更多的session相关FAQ参见: http://shyblog.cnblogs.com/

你可能感兴趣的:(.net,Web,浏览器,asp.net,asp)