Asp.net mvc 3 应用程序结束调用太早/频繁

Asp.net mvc 3 应用程序结束调用太早/频繁,asp.net-mvc-3,application-pool,recycle,Asp.net Mvc 3,Application Pool,Recycle,我正在一个项目中使用一个临时数据库,该项目在应用程序端处置: protected void Application_End() { if (_db != null) _db.Dispose(); } 问题是,当我浏览我的web项目时,似乎经常调用Application_End-似乎当我在db中编辑对象时,成功地进行了更改,数据库被处理,当我被重定向到索引时,一个新的数据库已经创建,并显示未更改的对象,就好像什么都没有发生一样 应用程序_不应该只在会话结束时或经过一定的空闲时间后才被调用

我正在一个项目中使用一个临时数据库,该项目在
应用程序端处置

protected void Application_End() {
    if (_db != null) _db.Dispose();
}
问题是,当我浏览我的web项目时,似乎经常调用Application_End-似乎当我在db中编辑对象时,成功地进行了更改,数据库被处理,当我被重定向到索引时,一个新的数据库已经创建,并显示未更改的对象,就好像什么都没有发生一样

应用程序_不应该只在会话结束时或经过一定的空闲时间后才被调用吗

有谁能告诉我如何才能确保只有在我实际使用完应用程序后才调用应用程序_End

问题是应用程序端似乎经常被调用 当我浏览我的网络项目时

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

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

应用程序_不应该只在会话结束时才被调用吗 还是经过一定的空闲时间

否,
Application\u End
与用户会话无关。它在应用程序域的生命周期结束时调用

谁能告诉我如何才能确保应用程序结束 仅当我实际使用完应用程序时才调用

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


因此,如果要避免这种情况发生,应该使用持久数据库,而不是内存中的存储。如果使用内存存储,则应用程序的生命周期会非常短。

即使脱离调试模式,我的数据库也会在编辑对象和重定向到索引之间进行处理,不会显示任何更改。你能建议我做些什么来阻止数据库被我调用的每一个动作处理掉吗?@Tyler,我建议你使用持久数据库。内存中的数据库非常适合进行单元测试,但在实际应用中完全没有用处。