【发布时间】:2012-08-05 13:08:08
【问题描述】:
根据 MSDN here 上的文档,当您使用 AutoDetect 时,我们目前在 ASP.NET 中遇到无 cookie 会话问题:
ASP.NET 确定请求浏览器或设备是否支持 cookie。如果请求浏览器或设备支持 cookie,则 AutoDetect 使用 cookie 来保存用户数据; 否则,将在查询字符串中使用标识符。如果浏览器或设备支持 cookie,但 cookie 当前被禁用,请求功能仍会使用 cookie。
注意查询字符串部分!现在,如果确实将它添加到像 &sessionId=yoursessionidhere 这样的 URL 中,那一切都很好,但实际上我得到的是这样的 URL:http://yourserver/folder/(session ID here)/default.aspx。
所以我的问题是:如何配置 ASP.NET 以使用查询字符串(如它所声称的那样)而不是这种 URL 破坏方法?
更新:
我正在添加我们在 web.config 中使用的配置值:
<sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" cookieless="AutoDetect" timeout="20" />
【问题讨论】:
-
&sessionId=yoursessionidhere据我所知,这样会话 ID 不会添加到 URL 中 -
@WaqarJanjua:这正是我所说的。 ID 像
http://yourserver/(sessionid)/folder/resource.aspx一样添加,我们不希望它破坏干净的 URL。我们希望将 id 添加到查询字符串中,以使其不那么突出。这是关于保持一个干净的 URL。 -
这是一个很好的问题(投票赞成)我会调查的!顺便说一下,您是使用带有路由或 MVC 的 WebForm 还是混合使用?