2014-12-28 4 views
0

Я использую 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] ...

+0

Возможно, это http://romiller.com/2014/06/10/reducing-code-first-database-chatter/ – ErikEJ

+0

Вы управляете приложением IIS или работаете на общей службе? Пулы приложений IIS поставляются с настройками переустановки по умолчанию на 29 часов (в зависимости от того, какую версию вы используете). Это делается для того, чтобы избежать проблем с webapps с ужасными утечками памяти, чтобы сервер был нестабильным. – rodrigogq

+0

@rodrigogq Я управляю приложением IIS. Я увеличил в своем приложении пул Idle time-out (был на 20 минут раньше), и на данный момент он работает. Я просто жду больше тестов, если проблема с Idle таймаутом была проблемой. – boluo

ответ

0

Итак, кажется, что t Проблема была в конфигурации пула приложений в IIS. Тайм-аут Idle был установлен раньше 20 минут, а теперь с тайм-аутом, установленным на 24 часа, проблема исчезла.

Смежные вопросы