Dev*_*ave 4 application-pool recycle asp.net-mvc-3
我在一个项目中使用临时数据库,该项目处于Application_End:
protected void Application_End() {
if (_db != null) _db.Dispose();
}
Run Code Online (Sandbox Code Playgroud)
问题是Application_End似乎经常在浏览我的web项目时被调用 - 似乎当我编辑db中的对象时,更改成功,数据库被处理,并且当我被重定向到索引 - 已创建新数据库并显示未更改的对象,就好像什么都没发生一样.
不应该在会话结束时或在一定的空闲时间之后调用Application_End吗?
谁能告诉我如何才能确保只在我实际使用完应用程序时调用Application_End?
Dar*_*rov 11
问题是,在浏览我的Web项目时,似乎经常调用Application_End
卸载AppDomain时会发生这种情况.在您调试时,每次重新编译项目时都会发生这种情况,这是正常的,因为每次重新编译bin文件夹中的程序集时,ASP.NET都会重新生成应用程序域.
当您在IIS中部署应用程序时,只有在IIS决定回收应用程序时才会发生这种情况.它可能发生在不同的情况下:一段时间不活动,达到CPU /内存阈值,......
不应该在会话结束时或在一定的空闲时间之后调用Application_End吗?
不,Application_End与用户会话无关.它在应用程序域的生命周期结束时调用.
谁能告诉我如何才能确保只在我实际使用完应用程序时调用Application_End?
情况就是这样:Application_End当应用程序域准备好卸载时,ASP.NET运行时调用它.
因此,如果您想避免这种情况发生,您应该使用持久数据库而不是内存存储.如果您使用内存存储,那么您与应用程序的生命周期紧密相关,因为您已经注意到它可能非常短.
| 归档时间: |
|
| 查看次数: |
4286 次 |
| 最近记录: |