6
你好,我试图实现一个带注入的全局过滤器。 过滤器看起来像这样。ASP.NET MVC 3和全局过滤器注入
public class WikiFilter : IActionFilter
{
private IWikiService service;
public WikiFilter(IWikiService service)
{
this.service = service;
}
public void OnActionExecuting(ActionExecutingContext filterContext)
{
!!!Code here!!
}
public void OnActionExecuted(ActionExecutedContext filterContext)
{
throw new NotImplementedException();
}
}
而且我已经在我的global.asax中用下面的方法连接了过滤器。
public class MvcApplication : System.Web.HttpApplication,
IAuthenticationApplication<User>
{
protected void Application_Start()
{
Ninject();
AreaRegistration.RegisterAllAreas();
RegisterRoutes(RouteTable.Routes);
RegisterGlobalFilters(GlobalFilters.Filters);
}
private void Ninject()
{
// Create Ninject DI kernel
IKernel kernel = new StandardKernel();
kernel.Bind<DataContext>().ToSelf().InRequestScope();
kernel.Bind<IWikiRepository>().To<WikiRepository>();
kernel.Bind<IWikiService>().To<WikiService>();
// Global filters
kernel.BindFilter<WikiFilter>(FilterScope.Global, 0);
DependencyResolver.SetResolver
(new NinjectDependencyResolver(kernel));
}
}
但由于某种原因,应用程序运行时过滤器永远不会被触发,我没有正确实现它吗?
即使这个工作,我仍然想知道为什么他的原始解决方案没有。 – BigOmega 2014-03-20 17:51:17
@Darin如果您通过ninject添加了过滤器,是否意味着您无需在FilterConfig.RegisterGlobalFilters(GlobalFilterCollection过滤器)中注册此过滤器? – Haroon 2014-12-06 20:57:26