ASP.NET会话突然结束

时间:2011-07-14 15:03:59

标签: asp.net session session-timeout

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

生成此自动退出的步骤是在加载和显示对象列表(客户端,管理器等)的页面之间切换。在大约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>

5 个答案:

答案 0 :(得分:2)

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

这是关于它的MSDN文章。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

您是否尝试在web.config中指定machineKey?

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

您可以在此处生成以下密钥:http://aspnetresources.com/tools/machineKey

此外,如果您在应用程序内部更改了超过15个文件(aspx文件等),它将自动触发重新编译代码,因此您可能会丢失会话,此处有更多信息:http://msdn.microsoft.com/en-us/library/s10awwz0(v=vs.85).aspx < / p>

答案 4 :(得分:-2)

会话只是一个cookie,每个cookie都有时间。也许你没有正确指定时间。检查你的web.config文件。