伙计们,
我正在尝试在ASP.NET Core的Controller
内部触发某个命令。
我已经安装了hangfire并配置了Startup.cs
public void ConfigureServices(IServiceCollection services)
{
...
services.AddHangfire(x => x.UseSqlServerStorage('my conn string'));
...
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
...
// add hangfire
app.UseHangfireDashboard();
app.UseHangfireServer();
...
}
但是问题是,我的样本控制器有多个依赖项注入
public class ProductsController: Controller
{
private readonly ISomething1 something1;
private readonly ISomething2 something2;
private readonly ISomething3 something3;
public ProductsController(ISomething1 something1, ISomething2 something2, ISomething3 something3){
this.something1 = something1;
this.something2 = something2;
this.something3 = something3;
}
public async Task<IActionResult> TriggerMe(){
...
}
}
我正在尝试在启动时实施类似的操作
RecurringJob.AddOrUpdate(
() => // trigger the TriggerMe() controller method ,
Cron.Daily);
请帮忙吗?谢谢
答案 0 :(得分:0)
更新
由于Rotavita与控制器,视图等紧密结合。我建议分两步解决此问题
Rotavita
在后台使用此lib)
原始
由于调用controller
实例是框架完成的过程,因此cron作业不应调用或调用它。
对于您的问题,您只需要将引用添加到方法或委托即可。假设您要将代码移至其他类。
var instance=new Foo();
RecurringJob.AddOrUpdate(() => instance.DoSomething,Cron.Daily);
和Foo
类
public class Foo
{
public void DoSomething()
{
//your code
}
}