OWIN异步启动(使用Hangfire)
OWIN asynchronous startup (using Hangfire)
我在远程 SQL 服务器上使用 Hangfire 和 SQL 存储,运行 它与我现有的 MVC 站点一起使用。我的创业class很简单:
public void Configuration(IAppBuilder app)
{
app.UseHangfire(config =>
{
config.UseSqlServerStorage("MY_CONNECTION_STRING");
config.UseServer();
});
}
问题是连接到远程服务器的任何延迟都会延迟我的 MVC 站点启动。有没有办法异步启动 OWIN,以便项目能够响应请求,而不管 OWIN 启动期间发生了什么,包括致命错误?
Hangfire 初始化逻辑在专用线程中执行,以减少应用程序的启动时间。因此,UseServer
方法只创建一个新线程,没有任何额外的逻辑。
UseSqlServerStorage
方法连接到您的数据库以检查您当前的模式以在必要时 运行 自动迁移(对 Hangfire.Schema
table 的一个简单查询)。这是默认行为,但是您可以 disable it:
var options = new SqlServerStorageOptions
{
PrepareSchemaIfNecessary = false
};
var storage = new SqlServerStorage("<name or connection string>", options);
执行此步骤后,Hangfire 将不会在启动时连接到您的数据库(其他 class 也不会这样做)。 但请留意发行说明,它们将包含有关数据库存储更改的信息。
我在远程 SQL 服务器上使用 Hangfire 和 SQL 存储,运行 它与我现有的 MVC 站点一起使用。我的创业class很简单:
public void Configuration(IAppBuilder app)
{
app.UseHangfire(config =>
{
config.UseSqlServerStorage("MY_CONNECTION_STRING");
config.UseServer();
});
}
问题是连接到远程服务器的任何延迟都会延迟我的 MVC 站点启动。有没有办法异步启动 OWIN,以便项目能够响应请求,而不管 OWIN 启动期间发生了什么,包括致命错误?
Hangfire 初始化逻辑在专用线程中执行,以减少应用程序的启动时间。因此,UseServer
方法只创建一个新线程,没有任何额外的逻辑。
UseSqlServerStorage
方法连接到您的数据库以检查您当前的模式以在必要时 运行 自动迁移(对 Hangfire.Schema
table 的一个简单查询)。这是默认行为,但是您可以 disable it:
var options = new SqlServerStorageOptions
{
PrepareSchemaIfNecessary = false
};
var storage = new SqlServerStorage("<name or connection string>", options);
执行此步骤后,Hangfire 将不会在启动时连接到您的数据库(其他 class 也不会这样做)。 但请留意发行说明,它们将包含有关数据库存储更改的信息。