2

プロジェクトにハングファイアを実装しようとしています。RecurringJob を hangfire に追加すると問題が発生し、起動すると次のエラーが発生します。

Autofac.Core.Registration.ComponentNotRegisteredException

要求されたサービス 'XXXX.Services.ScheduleTasks.RepairNotificationSevice' は登録されていません。この例外を回避するには、コンポーネントを登録してサービスを提供するか、IsRegistered() を使用してサービス登録を確認するか、ResolveOptional() メソッドを使用してオプションの依存関係を解決します。

hangfire と hangfire.autofac をインストールしました。Hangfire 構成を Startup.cs に追加しましたが、ContainerBuilder データは別のファイルにあります。私の startup.cs ファイルは次のようになります。

app.UseHangfire(config =>
        {
            config.UseSqlServerStorage("EmacIntranetEntities");
            config.UseServer();
            var builder = new ContainerBuilder();
            config.UseAutofacActivator(builder.Build());
        });

動作しません。結果なしで、var builder と config.UseAutofacActivator の間にすべての Container builder データを貼り付けることを確認しました。私の Autofac 構成は、Global.asax から呼び出される「Bootstrapper.cs」という名前のファイルにあります。この問題を解決するにはどうすればよいですか? ありがとう

4

1 に答える 1

2
var builder = new ContainerBuilder();

2 つの個別の autofac コンテナーがあります。ジョブがアクセスできるようにするコンポーネントを登録する必要があります。また、データベース接続を使用している場合は、もはや Web モードではなく、Web リクエストにアクセスできないことに注意してください。

builder.RegisterModule<ServicesModule>(); 

また

builder.RegisterType<XXXX.Services.ScheduleTasks.RepairNotificationSevice>().PropertiesAutowired().
于 2015-02-02T16:02:14.913 に答える