问题:在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"/>
感谢。
答案 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