0
hangfireをバックグラウンドジョブに使用していますが、タスクサービスを自動的に解決するためにhangfire autofacとの統合を使用しようとすると問題が発生します。依存関係の1つを解決することはできません。私は何のエラーも受けないので、私は思う。Hangfire Autofac統合が登録依存関係でサービスを解決できない
BackgroundJob.Enqueue<IBackgroundTask>(x => x.RunAsync());
私はmyselftで解決して別の方法を使用しています。
var service = ApplicationContainer.Resolve<IBackgroundTask>();
BackgroundJob.Enqueue(() => service.RunAsync());
私は私のコンストラクタで、私は問題を引き起こすテストサービスを持っていることを考え出しました。コンストラクタでサービスを削除すると、サービスが解決されます。
public class ConvertCarteCreditService : IBackgroundTask
{
private readonly ILogger logger;
private readonly ITest testService;
public BackgroundTask(ILogger logger, **ITest test**)
{
this.logger = logger;
this.testService = test;
// this.testService = Startup.Resolve<ITest>();
}
私はこのような起動クラスでautofacを設定している:
public void ConfigureServices(IServiceCollection services)
{
var builder = new ContainerBuilder();
ServiceLayerInstaller.ConfigureServices(builder);
DataLayerInstaller.ConfigureServices(builder, connectionString, readOnlyConnectionString);
builder.RegisterAssemblyTypes(typeof(WorkerRoleInstaller).
GetTypeInfo().Assembly).Where(t => t.Name.EndsWith("Test"))
.AsImplementedInterfaces();
WorkerRoleInstaller.ConfigureServices(builder);
builder.Populate(services);
ApplicationContainer = builder.Build();
var autofacJobActivator = new AutofacJobActivator(ApplicationContainer);
GlobalConfiguration.Configuration.UseActivator(autofacJobActivator);
}
「ITest」の実装は何ですか?そのクラスは1つ以上のインターフェースを実装していますか? – VMAtm