我有一个在IIS7上运行的asp.net网站,并且一直有一个大学的用户突然失去会话的问题。所有这些实例的共同点是,用户的客户端URL /主机地址,他们访问我们的网站,在他们的会话中途改变。要清楚,这就是我在他们的页面访问中记录的内容:
Request.UserHostAddress.ToString()
使用标准的asp.net cookie跟踪会话状态。 web.config中的相关行:
<sessionState mode="InProc" timeout="40"/>
网站不使用框架,并且使用单个工作进程(即没有Web园艺)从单个服务器(即不是Web场)运行。它仅定期发生在单个用户上,而其他用户的会话同时保持打开状态。
我已根据this article on troubleshooting Session loss将Cookie添加到要为网站记录的内容列表中。几个问题:
答案 0 :(得分:0)
Cookie保持与会话的连接及其与域的关联。在某些情况下,可能会在前面调用域www.
而在其他情况下不调用域 - 并且cookie将丢失,因此会话就会丢失。
要避免在web.config上将该域名称为
<httpCookies domain="domainname.com" .... />
没有www.
以保持与之相关的cookie。
现在,因为您使用作为服务运行的InProc
并将会话保留在内存而不是数据库上,所以已知此服务因某些原因而丢弃会话。为避免这种情况,您必须使用数据库来保持会话。
其他情况可以是从https
移至http
,如果您只是为了保证安全,则会再次丢失。