Application_End() 事件在 global.ascx 中没有任何调用的情况下被触发
在我触发更新或删除过程的按钮后,我的代码中的 Application_End() 事件在没有任何调用的情况下被触发。这会导致所有会话被破坏,并在用户每次更新/删除某些内容时将用户重定向到登录页面。 我认为这是由于某些异常而发生的,该异常正在终止并重新启动应用程序,而没有任何警告或错误。 请建议。 事先致谢
the Application_End() event in my application is getting fired without any call to the event by my code after i fire a button for update or delete process. this causes all the Sessions destroyed and redirects the user to Login page every time he update/delete some thing.
I think this is happening due to some Exception which is terminating and restarting Application without any warning or error.
Please suggest.
Prior thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
在调试模式下运行? AppDomain 每 15 次动态重新编译就会被回收一次。当文件发生变化时它也会回收,例如
web.config
。当应用程序站点内的非应用程序文件和文件夹发生更改时,它甚至会回收。因此,请测试一下在发布模式下是否仍然会发生这种情况。顺便说一下,您可以更改强制 AppDomain 重置的动态重新编译次数:在
web.config
中进行设置:提示:调试时不要使用 InProc 会话 - 使用 StateServer 或 SQL State(我的偏好) ) 反而。
请参阅 此博文了解更多信息。
Running in debug mode? The AppDomain gets recycled every 15 dynamic recompilations. It recycles when files change too, e.g.
web.config
. It even recycles when non-application files and folders change within the app site. So test to see if this still happens in Release mode.Incidentally you can change the number of dynamic recompiles that force an AppDomain reset: In the
web.config
set it here:Tip: Don't use InProc sessions while debugging - use StateServer or SQL State (my preference) instead.
See this blog post for more info.
第一个要查看的地方是事件查看器。在那里您可以找到工作进程中抛出的任何未处理的异常。
First place to look into is the Event Viewer. There you can find any unhandled exception thrown in the worker process.
您的网站可能由于某种原因正在回收。您必须检查代码的作用。我建议检查代码中的站点结构是否未更改(创建/删除目录)——这会导致应用程序域回收。
Your site may be recycling for some reason. You will have to check what the code does. I suggest checking that the site structure is not being altered in you code (create/remove directory) --- this leads to the app domain recycling.
会话状态在 Application_End 中不可用。就是这么简单。 Application_End 是在其他一切都消失之后触发的事件。事件日志条目很好地描述了这一点。
Session state is not available in Application_End. It's that simple. Application_End is an event that fires after everything else is long gone. The event log entry describes this quite well.