Van*_*nel 2 c# asp.net background asp.net-web-api hangfire
我正在使用C#和.NET Framework 4.5.1开发ASP.NET MVC Web Api 2应用程序.
有时,当用户调用get on时,ApiController我必须在后台运行任务.该任务将填充包含更多数据的数据库表.
在Internet上搜索我发现了这篇文章,如何在ASP.NET中运行后台任务.我想使用HangFire.但是阅读它的文档我没有找到一种方法来使用它而不在我的ASP.NET Web Api应用程序上使用OWIN(我现在没有使用它).
有没有办法在没有OWIN的情况下使用Hangfire?或者,是否有另一种选择在ASP.NET Web Api 2应用程序上运行后台任务?
我不太确定你是否仍然需要这个(我对此表示怀疑)但我会回答这个问题,因为它在谷歌搜索上排名很高.那么,使用OWIN启动Hangfire服务器的传统方法如下......
public void Configuration(IAppBuilder app){
app.UseHangfireServer();
}
Run Code Online (Sandbox Code Playgroud)
但是,基于文档... Hangfire根本不依赖于OWIN,您需要做的就是启动和停止 BackgroundJobServer
(来源)http://docs.hangfire.io/en/latest/background-processing/processing-background-jobs.html
Hangfire Server部分负责后台作业处理.服务器不依赖于ASP.NET,可以从控制台应用程序到Microsoft Azure Worker Role在任何地方启动.所有应用程序的单个API都通过BackgroundJobServer类公开
这意味着你应该在应用程序启动时启动服务器...
var server = new BackgroundJobServer();
Run Code Online (Sandbox Code Playgroud)
当申请结束时你会处理它...
server.Dispose();
Run Code Online (Sandbox Code Playgroud)
而这正是app.UseHangfireServer();它的作用.查看源代码......
https://github.com/HangfireIO/Hangfire/blob/master/src/Hangfire.Core/AppBuilderExtensions.cs#L293
和
https://github.com/HangfireIO/Hangfire/blob/master/src/Hangfire.Core/AppBuilderExtensions.cs#L311
使用global.asax查看下面的示例..
BackgroundJobServer _server;
protected void Application_Start(object sender, EventArgs e)
{
GlobalConfiguration.Configuration
.UseSqlServerStorage("YOUR_CONNECTION_STRING");
_server = new BackgroundJobServer();
}
protected void Application_End(object sender, EventArgs e)
{
_server.Dispose();
}
Run Code Online (Sandbox Code Playgroud)
要注册SQL Server存储,您不需要OWIN,这就是您需要做的所有事情......
Hangfire.GlobalConfiguration.Configuration.UseSqlServerStorage("YOUR_CONNECTION_STRING");
Run Code Online (Sandbox Code Playgroud)
再次,我通过查看源代码来得出这个结论......
Hangfire并不依赖于OWIN而且他们已经承认了这一点
| 归档时间: |
|
| 查看次数: |
5065 次 |
| 最近记录: |