在Global.asax中没有任何调用的情况下触发Application_End()事件

时间:2011-07-20 09:18:26

标签: asp.net global-asax application-end

在我触发更新或删除过程的按钮后,我的代码中的 Application_End()事件在我的应用程序中被触发而没有任何调用。这会导致所有会话被破坏,并在每次更新/删除某些内容时将用户重定向到“登录”页面。 我认为这是由于一些异常终止并重新启动应用程序而没有任何警告或错误。 请建议。 事先谢谢

4 个答案:

答案 0 :(得分:2)

在调试模式下运行?每15次动态重新编译,AppDomain就会被回收。当文件也发生变化时它会循环使用,例如web.config。当应用程序站点内的非应用程序文件和文件夹发生更改时,它甚至会进行循环因此,请测试在发布模式下是否仍然会发生这种情况。

顺便提一下,您可以更改强制重置AppDomain的动态重新编译的数量:在web.config中将其设置为:

<compilation numRecompilesBeforeAppRestart="15" />

提示:在调试时不要使用InProc会话 - 而是使用StateServer或SQL State(我的首选项)。

有关详细信息,请参阅this blog post

答案 1 :(得分:1)

首先要研究的是事件查看器。在那里,您可以找到工作进程中抛出的任何未处理的异常。

答案 2 :(得分:0)

由于某种原因,您的网站可能正在回收。您必须检查代码的作用。我建议检查您的代码中的网站结构是否未被更改(创建/删除目录)---这会导致应用程序域回收。

答案 3 :(得分:0)

Application_End中没有会话状态。就这么简单。 Application_End是一个在其他所有东西早已消失后触发的事件。事件日志条目很好地描述了这一点。