我使用ASP.NET Web API和EF 6(代码优先),为了开发目的,我创建了一个带DropCreateDatabaseAlways的初始化程序。
我在远程服务器(IIS 8.0)上部署应用程序,我注意到在一些不活动之后,当在API上进行调用时,会调用初始化程序。我认为这个初始化程序只会在应用程序的每次运行时丢弃并创建数据库,但是一旦部署,应用程序就不会停止运行,那么是否有超时,或类似的东西?
如果您有任何想法,为什么会这样。
以下是一些有用的代码和日志。 背景:
public MyDAL()
: base("MyEntities")
{
Database.SetInitializer<MyDAL>(new MyInitializer());
this.Database.Log = s => log.Info(s);
}
一些日志:
// 05:30请求成功,无需删除/创建数据库 2014-12-28 05:30:38,312 INFO - - 执行于28/12/2014 05:30:38 +01:00
2014-12-28 05:30:38,343 INFO - - 在27 ms内完成,结果为:SqlDataReader
2014-12-28 05:30:38,343 INFO -
2014-12-28 05:30:38,343 INFO - 关闭连接时间:2014年12月28日05:30:38 +01:00
//在06:46客户端要求验证服务 2014-12-28 06:46:15,398 INFO - 2014-12-28 06:46:21,070 INFO - 在2014年12月28日开放的连接06:46:21 +01:00
2014-12-28 06:46:21,132 INFO - 于2014年12月28日06:46:21 +01:00开始交易
2014-12-28 06:46:21,132 INFO - CREATE TABLE [dbo] ...
答案 0 :(得分:0)
所以,似乎是,问题是IIS中应用程序池的配置。空闲超时在20分钟之前设置,现在超时设置为24小时,问题就消失了。