2015-02-09 8 views
1

Я использую Hangfire с SQL Storage на удаленном SQL-сервере и запускаю его вместе с существующим сайтом MVC. Мой класс запуска очень прост:OWIN асинхронный запуск (с использованием Hangfire)

public void Configuration(IAppBuilder app) 
{ 
     app.UseHangfire(config => 
     { 
      config.UseSqlServerStorage("MY_CONNECTION_STRING"); 
      config.UseServer(); 
     }); 
} 

Проблема заключается в том, что любая задержка при подключении к удаленному серверу задерживает мой MVC сайт от раскручивания. Есть ли способ запустить OWIN асинхронно, чтобы проект мог отвечать на запросы независимо от того, что происходит во время запуска OWIN, включая фатальные ошибки?

ответ

0

Логика инициализации Hangfire выполняется в выделенном потоке, чтобы уменьшить время запуска вашего приложения. Таким образом, метод UseServer создает только новый поток без дополнительной логики.

Это поведение по умолчанию, однако вы можете disable it:

var options = new SqlServerStorageOptions 
{ 
    PrepareSchemaIfNecessary = false 
}; 

var storage = new SqlServerStorage("<name or connection string>", options); 

После выполнения этого шага, замедленное воспламенение не будет подключаться к базе данных при запуске (и никакой другой класс не будет делать это). Но следите за примечаниями к выпуску, они будут содержать информацию о изменениях в хранилище базы данных.