2011-07-14 80 views
2

我的应用程序的会话突然结束,并且在Global.asax的Application_Error中看不到任何错误。此外,Session_Start事件触发,但不是Session_End。它发生在我将应用程序托管在服务器上并且不在我的开发机器上发生之后。ASP.NET会话突然终止

生成此自动退出的步骤是在加载和显示对象列表(客户端,管理器等)的页面之间切换。大约30-40秒的活动后,用户注销并显示登录屏幕。任何想法可能在幕后出错?

的Web.Config对会话和认证以下设置:

<sessionState timeout="60" mode="InProc" cookieless="false"/> 

认证:

<forms name="XXX.AUTH" loginUrl="~/login.aspx" protection="All" timeout="60" path="/" requireSSL="false" slidingExpiration="true" defaultUrl="~/default.aspx" enableCrossAppRedirects="false"/></authentication> 

回答

2

您是否在共享主机环境中托管(即来自托管服务提供商,如GoDaddy)?他们可能每分钟都在回收IIS工作进程,在这种情况下,您会丢失会话信息。您必须使用某种类型的进程外会话状态,例如状态服务器或Sql状态服务器来避免这种情况。

这是MSDN文章。

+0

你的意思是mode =“stateServer”?是的,它是一个共享主机环境。如果我使用stateServer,我需要指定server:port设置,我可以从哪里获得这些设置?我还需要配置IIS/Server吗? – A9S6

+0

是的,您可以使用mode =“stateServer”或mode =“SQLServer”。谁是你的主人?我相当有信心GoDaddy不支持这个,因为我碰到它[早](http://stackoverflow.com/questions/6092249/does-godaddy-support-asp-net-stateserver)。 – Jason

+0

它是一个客户端站点(我只能通过FTP访问它),但我不确定提供者,但是使用whois搜索“ns1.microsoft2008hosting.com”出现,并且出现“microsoft2008hosting”。com“无效 – A9S6

-2

会议简直就是一个cookie,以及每个cookie都有一个时间。也许你没有正确指定时间。检查你的web.config文件。

+0

将会话设置添加到原始帖子。 – A9S6

+0

会话不仅仅是一个cookie。在Web浏览器的环境中,确保它只是一个cookie,但是cookie的超时时间绝对不能100%反映会话管理服务中关联会话的超时时间。例如,某些会话cookie可能会在浏览会话结束时过期,或者从不过期,而会话本身可能会在闲置15分钟后终止。 –

1

您是否检查过网站的应用程序池是否正在回收?如果发生这种情况,应用程序将停止在它的轨道上。更多的应用程序在应用程序池中运行,可能会有另一个应用程序崩溃,并将应用程序关闭。

+0

我该如何检查?我有FTP访问该网站,也许我需要访问到管理控制台? – A9S6

+0

你可以RDP到服务器?如果是的话,那么你可以检查它...在共享主机你做没有真正有办法检查这与出去联系支持 –

+0

不,我不能RDP - 它共享主机。 – A9S6

0

您错过了在您的IIS池属性中更改会话到期值。

0

您是否尝试过在web.config中指定machineKey?此外http://aspnetresources.com/tools/machineKey

,如果你改变超过15个文件的应用程序中(ASPX文件等)时,会自动触发的代码重新编译,你可能会失去:

<machineKey 
validationKey="random_validation_key" 
decryptionKey="random_decryption_key" 
validation="SHA1" decryption="AES" /> 

你可以在这里产生这些密钥结果,更多信息在这里:http://msdn.microsoft.com/en-us/library/s10awwz0(v=vs.85).aspx