我的应用程序的会话突然结束,并且没有看到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>
答案 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文件。