Я использую ASP.NET Web API с EF 6 (сначала код), а для целей разработки я создал инициализатор с DropCreateDatabaseAlways.EF сбрасывает базу данных после некоторой неактивности
Я развертываю приложение на удаленном сервере (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: 38312 INFO - - Исполнительное на 28/12/2014 05:30:38 +01: 00
2014-12-28 05: 30: 38,343 INFO - - Выполнен в 27 мс с результатом: SqlDataReader
2014-12-28 05: 30: 38,343 INFO -
2014-12-28 05: 30: 38343 INFO - закрытое соединение в 28/12/2014 05:30:38 +01: 00
// В 06:46 клиент запрашивает службы аутентификации 2014 -12-28 06: 46: 15,398 INFO - 2014-12-28 06: 46: 21,070 INFO - Открытое соединение на 28/12/2014 06:46:21 +01: 00
2014-12-28 06: 46: 21132 INFO - Начало транзакции в 28/12/2014 06:46:21 +01: 00
2014-12-28 06: 46: 21132 INFO - CREATE TABLE [DBO] ...
Возможно, это http://romiller.com/2014/06/10/reducing-code-first-database-chatter/ – ErikEJ
Вы управляете приложением IIS или работаете на общей службе? Пулы приложений IIS поставляются с настройками переустановки по умолчанию на 29 часов (в зависимости от того, какую версию вы используете). Это делается для того, чтобы избежать проблем с webapps с ужасными утечками памяти, чтобы сервер был нестабильным. – rodrigogq
@rodrigogq Я управляю приложением IIS. Я увеличил в своем приложении пул Idle time-out (был на 20 минут раньше), и на данный момент он работает. Я просто жду больше тестов, если проблема с Idle таймаутом была проблемой. – boluo