OWIN异步启动(使用Hangfire)

时间:2015-02-09 21:05:07

标签: asp.net-mvc owin hangfire

我在远程SQL服务器上使用Hangfire和SQL Storage,并将其与我现有的MVC站点一起运行。我的启动课很简单:

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

问题是连接到远程服务器的任何延迟都会导致我的MVC站点无法启动。有没有办法异步启动OWIN,以便项目能够响应请求,无论OWIN启动期间发生什么,包括致命错误?

1 个答案:

答案 0 :(得分:0)

Hangfire初始化逻辑在专用线程中执行,以减少应用程序的启动时间。因此,UseServer方法只创建一个新线程,没有任何其他逻辑。

UseSqlServerStorage方法连接到您的数据库以检查您当前的架构,以便在必要时运行自动迁移(对Hangfire.Schema表的一个简单查询)。这是默认行为,但您可以disable it

var options = new SqlServerStorageOptions
{
    PrepareSchemaIfNecessary = false
};

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

执行此步骤后,Hangfire将无法在启动时连接到您的数据库(并且没有其他类可以执行此操作)。 但请密切关注发行说明,它们将包含有关数据库存储更改的信息。