【发布时间】:2011-07-20 09:18:25
【问题描述】:
在我触发更新或删除过程的按钮后,我的应用程序中的 Application_End() 事件在没有任何调用的情况下被我的代码触发。这会导致所有会话被破坏,并在用户每次更新/删除某些内容时将用户重定向到登录页面。 我认为这是由于一些异常终止并重新启动应用程序而没有任何警告或错误。 请建议。 先谢谢了
【问题讨论】:
标签: asp.net global-asax application-end
在我触发更新或删除过程的按钮后,我的应用程序中的 Application_End() 事件在没有任何调用的情况下被我的代码触发。这会导致所有会话被破坏,并在用户每次更新/删除某些内容时将用户重定向到登录页面。 我认为这是由于一些异常终止并重新启动应用程序而没有任何警告或错误。 请建议。 先谢谢了
【问题讨论】:
标签: asp.net global-asax application-end
在调试模式下运行? AppDomain 每 15 次动态重新编译就会被回收。当文件也发生变化时它会回收,例如web.config。当应用程序站点内的非应用程序文件和文件夹发生更改时,它甚至会回收。所以测试一下在发布模式下是否仍然会发生这种情况。
顺便说一句,您可以更改强制 AppDomain 重置的动态重新编译次数:在 web.config 中设置它:
<compilation numRecompilesBeforeAppRestart="15" />
提示:调试时不要使用 InProc 会话 - 改用 StateServer 或 SQL State(我的偏好)。
请参阅this blog post 了解更多信息。
【讨论】:
首先要查看的是事件查看器。在那里你可以找到工作进程中抛出的任何未处理的异常。
【讨论】:
您的网站可能出于某种原因正在回收。您将不得不检查代码的作用。我建议检查您的代码中是否没有更改站点结构(创建/删除目录)——这会导致应用程序域回收。
【讨论】:
Application_End 中没有会话状态。就是这么简单。 Application_End 是一个在其他一切都早已消失后触发的事件。事件日志条目很好地描述了这一点。
【讨论】: