Hola, estoy tratando de implementar un filtro global con inyección. El filtro tiene este aspecto.ASP.NET MVC 3 e inyección de filtro global
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();
}
}
Y he adjuntado el filtro con la inyección de la siguiente manera en mi 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));
}
}
Pero por alguna razón el filtro nunca se dispara cuando se ejecuta la aplicación, ¿no lo he implementado correctamente?
Incluso si esto funcionó, todavía me pregunto por qué su solución original no lo hizo. – BigOmega
@Darin si agregó el filtro mediante ninject, ¿significa eso que no necesita registrar este filtro en FilterConfig.RegisterGlobalFilters (filtros GlobalFilterCollection)? – Haroon