gpt4 book ai didi

asp.net-mvc-3 - Application_End 被调用过早/频繁

转载 作者:行者123 更新时间:2023-12-04 22:35:01 27 4
gpt4 key购买 nike

我在 Application_End 上处理的项目中使用临时数据库:

protected void Application_End() {
if (_db != null) _db.Dispose();
}

问题是 Application_End 在我浏览我的 web 项目时似乎经常被调用 - 似乎当我在 db 中编辑一个对象时,更改成功完成,数据库被处理,当我被重定向到索引 - 一个新的 db 已被创建并显示未更改的对象,就好像什么也没发生一样。

Application_End 不应该只在 session 结束时或在一定的空闲时间后被调用吗?

谁能告诉我如何才能确保 Application_End 仅在我实际使用完应用程序时才被调用?

最佳答案

The problem is that Application_End seems to be called frequently whilst I am browsing through my web project



卸载 AppDomain 时会发生这种情况。在调试时,每次重新编译项目时都会发生这种情况,这是正常的,因为每次重新编译 bin 文件夹中的程序集都会重新生成,而 ASP.NET 只是回收应用程序域。

当您在 IIS 中部署应用程序时,这种情况很少发生,只有在 IIS 决定回收应用程序时才会发生。它可能在不同情况下发生:一段时间不事件,达到 CPU/内存阈值,......

Shouldn't Application_End only being called when the session is ended or after a certain amount of idle time?



不, Application_End 与用户 session 无关。它在应用程序域的生命周期结束时被调用。

Could anyone tell me how I may be able to ensure that Application_End is only called when I am actually finished using the application?



情况就是这样:当应用程序域准备好卸载时,ASP.NET 运行时会调用 Application_End

因此,如果您想避免这种情况发生,您应该使用持久数据库而不是内存存储。如果您使用内存存储,那么您将与应用程序的生命周期相关联,正如您已经注意到的那样,该生命周期可能非常短。

关于asp.net-mvc-3 - Application_End 被调用过早/频繁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8984443/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com