asp.net-core – 使用.net核心进行Hangfire依赖注入
|
如何在Hangfire中使用.net core的默认依赖注入? 我是Hangfire的新手,正在寻找一个与asp.net核心兼容的例子。 解决方法请参阅GitHub https://github.com/gonzigonz/HangfireCore-Example上的完整示例。现场网站于 http://hangfirecore.azurewebsites.net/ >确保您拥有Hangfire的核心版本: public class HangfireActivator : Hangfire.JobActivator
{
private readonly IServiceProvider _serviceProvider;
public HangfireActivator(IServiceProvider serviceProvider)
{
_serviceProvider = serviceProvider;
}
public override object ActivateJob(Type type)
{
return _serviceProvider.GetService(type);
}
}
>接下来将Startfire注册为Startup.ConfigureServices方法中的服务: services.AddHangfire(opt =>
opt.UseSqlServerStorage("Your Hangfire Connection string"));
>在Startup.Configure方法中配置hangfire。与您的问题相关,关键是配置hangfire以使用我们上面定义的新HangfireActivator。为此,您必须使用IServiceProvider提供hangfire,这可以通过将其添加到Configure方法的参数列表来实现。在运行时,DI将为您提供此服务: public void Configure(
IApplicationBuilder app,IHostingEnvironment env,ILoggerFactory loggerFactory,IServiceProvider serviceProvider)
{
...
// Configure hangfire to use the new JobActivator we defined.
GlobalConfiguration.Configuration
.UseActivator(new HangfireActivator(serviceProvider));
// The rest of the hangfire config as usual.
app.UseHangfireServer();
app.UseHangfireDashboard();
}
>当您将作业排队时,请使用通常是您的界面的注册类型。除非您以这种方式注册,否则请勿使用具体类型。您必须使用在您的IoC其他Hangfire中注册的类型才能找到它。 services.AddScoped<DbManager>(); services.AddScoped<IMyService,MyService>(); 然后,您可以使用该类的实例化版本将DbManager排入队列: BackgroundJob.Enqueue(() => dbManager.DoSomething()); 但是你不能对MyService做同样的事情。使用实例化版本进行排队将失败,因为DI将失败,因为只有接口已注册。在这种情况下,你会像这样排队: BackgroundJob.Enqueue<IMyService>( ms => ms.DoSomething()); (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 我如何可以渲染局部视图在asp.net mvc 3
- asp.net-mvc – Mvc3 Antiforgery令牌多标签
- ASP.NET概要分析
- asp.net – 在实体框架中使用PersianCalendar作为表列的正确
- asp.net-mvc – IIS 7上的ASP.net MVC返回空白页面
- 在ASP.NET MVC 3应用程序中编辑并继续
- asp.net-mvc-3 – 如何修改MVC3视图页面中的body类
- asp.net-mvc – 未设置localhost cookie
- asp.net – 在开发系统上禁用OutputCache
- ASP.NET 程序中删除文件夹导致session失效问题的解决办法分
- asp.net – 在PostBack期间Recaptcha消失
- iis – ServerManager构造函数在测试环境中崩溃
- asp.net-mvc – Url.Action with RouteValueDict
- asp.net-mvc – 具有默认日期的MVC4日期选择器
- asp.net-mvc-3 – 我可以在App_Code之外使用全局
- asp.net-mvc – IIS8中最佳的“动态IP限制设置”
- asp.net – IIS 7的最大默认POST请求大小 – 如何
- 如何在ASP.Net Web API中为特定控制器启用Window
- regex – ASP Classic:检查字符串是否只包含有效
- .net – 强制从/ bin加载汇编,而不是GAC?
