Hangfire を Ninject で使用しようとしています。
これが私の問題です。私のプロジェクトは次のようにレイアウトされています。
.Sln
|- Core
|- Web
HangfireCore
メソッドは次のとおりです。
public class Scheduler
{
public void HangfireIoc()
{
BackgroundJob.Enqueue<MovieSaver>(x => x.SaveMovies());
}
}
( ) 内の MovieSaver クラスCore
:
public class MovieSaver
{
public IMovieApi Api { get; set; }
public MovieSaver(IMovieApi api)
{
Api = api;
}
//Other methods
}
Startup.cs (でWeb
)
public void Configuration(IAppBuilder app)
{
var kernal = new StandardKernel();
GlobalConfiguration.Configuration.UseNinjectActivator(kernal);
app.UseHangfireDashboard();
app.UseHangfireServer();
}
Core
Ninjectの Bindings クラスがあります。
public class Bindings : NinjectModule
{
public override void Load()
{
Bind<IMovieApi>().To<MovieApi>();
}
}
しかし、Hangfire がジョブを開始すると、次のようになります。
Ninject.ActivationException
Error activating IMovieApi No matching bindings are available, and the type is not self-bindable.
Activation path: 2) Injection of dependency IMovieApi into parameter api of constructor of type MovieSaver
1) Request for MovieSaver Suggestions: 1) Ensure that you have defined a binding for IMovieApi.
2) If the binding was defined in a module, ensure that the module has been loaded into the kernel.
3) Ensure you have not accidentally created more than one kernel.
4) If you are using constructor arguments, ensure that the parameter name matches the constructors parameter name.
5) If you are using automatic module loading, ensure the search path and filters are correct.
私は Ninject および IoC コンテナーを初めて使用します。
誰でも助けてくれますか?