Web请求不使用相同的会话标识符

时间:2014-01-29 15:14:38

标签: asp.net session-cookies session-state

问题:在ASP.NET Web窗体应用程序中,Session_ID对于每个Web请求都是不同的。相关的ASP.NET_SessionId cookie没有出现在firebug中。

在研究过程中,我发现会话Cookie在PostReleaseRequestState event被解雇之前就消失了。

目前找到了一种自定义会话状态模块实现的解决方案。见SessionStateUtility Class (MSDN)。虽然采用了这个应用程序这个样本似乎解决了所有已知的问题,但这个解决方案对我来说不够干净,不是吗?如果是这样,这里有什么问题?

相关配置源部分如下:
<sessionState mode="InProc" stateConnectionString="***" sqlConnectionString="***" cookieless="false" timeout="20"/>

感谢。

1 个答案:

答案 0 :(得分:2)

正如本回答https://stackoverflow.com/a/2874174/741695中所述,在使用会话对象之前,ASP .NET不会为会话数据分配存储空间。

简而言之,您可以在Global.asax中实现Session_Start并在Session对象中存储一些虚拟数据来修复其SessionID,或者您可以在应用程序代码中的其他位置执行相同操作。

希望这有帮助。

参考文献:

https://stackoverflow.com/a/2874174/741695

http://msdn.microsoft.com/en-us/library/system.web.sessionstate.httpsessionstate.sessionid.aspx