C# 自有服务-尚未注册类型的服务
我想在我的ASP.NET核心应用程序中使用Hangfire,但我收到错误消息: 尚未注册类型的服务 这是我的密码: 服务: 在Startup.cs中:C# 自有服务-尚未注册类型的服务,c#,asp.net,dependency-injection,asp.net-core,hangfire,C#,Asp.net,Dependency Injection,Asp.net Core,Hangfire,我想在我的ASP.NET核心应用程序中使用Hangfire,但我收到错误消息: 尚未注册类型的服务 这是我的密码: 服务: 在Startup.cs中: public void ConfigureServices(IServiceCollection services) { services.AddSingleton<IMyService, MyService>(); // another services } public void Configure(IAppli
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<IMyService, MyService>();
// another services
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, IServiceProvider serviceProvider)
{
app.UseHangfireDashboard();
app.UseHangfireServer();
RecurringJob.AddOrUpdate(() => serviceProvider.GetService<IMyService>().MyMethod(), Cron.Minutely);
}
public void配置服务(IServiceCollection服务)
{
services.AddSingleton();
//其他服务
}
public void Configure(IApplicationBuilder应用程序、IHostingEnvironment环境、iLogger工厂、IServiceProvider服务提供商)
{
app.UseHangfireDashboard();
app.UseHangfireServer();
RecurringJob.AddOrUpdate(()=>serviceProvider.GetService().MyMethod(),Cron.Minutely);
}
你知道为什么服务没有注册吗?Hangfire钩住已经存在的依赖注入,这样你就不需要使用
serviceProvider.GetService
来获取你的对象。而是使用适当的Hangfire函数来解决依赖关系:
RecurringJob.AddOrUpdate<IMyService>(s => s.MyMethod(), Cron.Minutely);
RecurringJob.AddOrUpdate(s=>s.MyMethod(),Cron.Minutely);
这里的IRssService
应该与IMyService
相同吗?@DavidG是的,它是相同的。我的错误。我已经解决了。问题很可能与此问题中的问题相同,MyContext已注册为作用域或根本未注册。您不能为此使用正确的Hangfire方法吗?类似这样:RecurringJob.AddOrUpdate(s=>s.MyMethod(),Cron.Minutely)代码>@DavidG是的,它能工作。谢谢!这也适用于BackgroundJob.EnqueueBackgroundJob.Enqueue(ms=>ms.MyMethod())代码>
RecurringJob.AddOrUpdate<IMyService>(s => s.MyMethod(), Cron.Minutely);