我想注入到Hangfire AuthorizationFilter我的自定義服務器,並用它做一些事我的問題是我的服務始終爲空。MVC Hangfire授權Ninject
Owin啓動類:
public class Startup
{
public void Configuration(IAppBuilder app)
{
GlobalConfiguration.Configuration
.UseSqlServerStorage("SomeContext")
.UseNinjectActivator(new Bootstrapper().Kernel);
app.UseHangfireDashboard("/hangfire", new DashboardOptions { AuthorizationFilters = new[] { new RestrictiveAuthorizationFilter() } });
app.UseHangfireServer();
}
}
自定義過濾器:
public class RestrictiveAuthorizationFilter : IAuthorizationFilter
{
[Inject]
public IUserService _userService { get; set; }
public bool Authorize(IDictionary<string, object> owinEnvironment)
{
//do something with _userService but it is always null
return true;
}
}
Ninject內核:
private static void RegisterServices(IKernel kernel)
{
kernel.Bind(x => { x.From(typeof(BookService).Assembly).SelectAllClasses().EndingWith("Service").BindDefaultInterface(); });
kernel.Bind<LibraryDBContext>().ToSelf().InRequestScope();
kernel.Bind<IBackgroundJobClient>().To<BackgroundJobClient>();
}
我沒有看到我的錯誤,你能幫助我嗎?
你需要告訴ninject建立這種情況下,通常用'kernel.BindFilter(FilterScope.Action,NULL)完成的;'。但是我不知道如何將它應用到Hangfire儀表板。 –
BatteryBackupUnit
當您做了@BatteryBackupUnit關於註冊的說法後,將'AuthorizationFilters = new [] {new RestrictiveAuthorizationFilter()}'改爲'AuthorizationFilters = new [] {injectFilter}',並將'RestrictiveAuthorizationFilter injectedFilter'作爲參數。 – CrazyPyro