加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc-3 – Application_End被过早/经常调用

发布时间:2020-12-16 03:58:15 所属栏目:asp.Net 来源:网络整理
导读:我在Application_End上部署的项目中使用临时数据库: protected void Application_End() { if (_db != null) _db.Dispose();} 问题是Application_End似乎经常在浏览我的web项目时被调用 – 似乎当我编辑db中的对象时,更改成功,数据库被处理,并且当我被重定向
我在Application_End上部署的项目中使用临时数据库:

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

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

不应该在会话结束时或在一定的空闲时间之后调用Application_End吗?

谁能告诉我如何才能确保只在我实际使用完应用程序时调用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与用户会话无关.它在应用程序域的生命周期结束时调用.

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.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读