Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var container = new UnityContainer();
- container.RegisterInstance<IFilterProvider>("FilterProvider", new FilterProvider(container));
- container.RegisterInstance<IActionFilter>("LogActionFilter", new TraceActionFilter());
- public class FilterProvider : IFilterProvider
- {
- private IUnityContainer container;
- public FilterProvider(IUnityContainer container)
- {
- this.container = container;
- }
- public IEnumerable<Filter> GetFilters(ControllerContext controllerContext, ActionDescriptor actionDescriptor)
- {
- foreach (IActionFilter actionFilter in this.container.ResolveAll<IActionFilter>())
- {
- yield return new Filter(actionFilter, FilterScope.First, null);
- }
- }
- }
- public class TraceActionFilter : IActionFilter
- {
- public void OnActionExecuted(ActionExecutedContext filterContext)
- {
- filterContext.HttpContext.Trace.Write("OnActionExecuted");
- filterContext.HttpContext.Trace.Write("Action " + filterContext.ActionDescriptor.ActionName);
- filterContext.HttpContext.Trace.Write("Controller " + filterContext.ActionDescriptor.ControllerDescriptor.ControllerName);
- }
- public void OnActionExecuting(ActionExecutingContext filterContext)
- {
- filterContext.HttpContext.Trace.Write("OnActionExecuting");
- filterContext.HttpContext.Trace.Write("Action " + filterContext.ActionDescriptor.ActionName);
- filterContext.HttpContext.Trace.Write("Controller " + filterContext.ActionDescriptor.ControllerDescriptor.ControllerName);
- }
- }
- protected void Application_Start()
- {
- Bootstrapper.Initialise();
- UnityWebApiActivator.Start();
- ConfigureApi(GlobalConfiguration.Configuration); //line added
- AreaRegistration.RegisterAllAreas();
- WebApiConfig.Register(GlobalConfiguration.Configuration);
- FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
- RouteConfig.RegisterRoutes(RouteTable.Routes);
- BundleConfig.RegisterBundles(BundleTable.Bundles);
- }
- void ConfigureApi(HttpConfiguration config)
- {
- var unity = new UnityContainer();
- unity.RegisterType<ProductsApiController>();
- unity.RegisterType<CategoriesApiController>();
- unity.RegisterType<IProductService, ProductService>(
- new HierarchicalLifetimeManager());
- unity.RegisterType<IProductsDatabase, ProductsDatabase>(
- new HierarchicalLifetimeManager());
- unity.RegisterType<ICategorieService, CategorieService>(
- new HierarchicalLifetimeManager());
- unity.RegisterType<ICategoriesDatabase, CategoriesDatabase>(
- new HierarchicalLifetimeManager());
- unity.RegisterType<ILogProvider, ElmahProvider>(
- new HierarchicalLifetimeManager());
- unity.RegisterType<IRootController, RootController>(
- new HierarchicalLifetimeManager());
- config.DependencyResolver = new IoCContainer(unity);
- //ADDED PARTS
- var providers = GlobalConfiguration.Configuration.Services.GetFilterProviders().ToList();
- config.Services.Add(
- typeof(System.Web.Http.Filters.IFilterProvider),
- new Filter2Provider(UnityConfig.GetConfiguredContainer()));
- var defaultprovider = providers.First(p => p is System.Web.Http.Filters.ActionDescriptorFilterProvider);
- config.Services.Remove(typeof(System.Web.Http.Filters.IFilterProvider), defaultprovider);
- }
- public class UnityActionFilterProvider
- : System.Web.Http.Filters.ActionDescriptorFilterProvider,
- System.Web.Http.Filters.IFilterProvider
- {
- private readonly IUnityContainer container;
- public UnityActionFilterProvider(IUnityContainer container)
- {
- this.container = container;
- }
- public new IEnumerable<FilterInfo> GetFilters(HttpConfiguration configuration,
- HttpActionDescriptor actionDescriptor)
- {
- foreach (IActionFilter actionFilter in container.ResolveAll<IActionFilter>())
- {
- // TODO: Determine correct FilterScope
- yield return new FilterInfo(actionFilter, FilterScope.Global);
- }
- }
- }
- var providers =
- GlobalConfiguration.Configuration.Services.GetFilterProviders().ToList();
- GlobalConfiguration.Configuration.Services.Add(
- typeof(System.Web.Http.Filters.IFilterProvider),
- new UnityActionFilterProvider(UnityConfig.GetConfiguredContainer()));
- var defaultprovider = providers.First(p => p is ActionDescriptorFilterProvider);
- GlobalConfiguration.Configuration.Services.Remove(
- typeof(System.Web.Http.Filters.IFilterProvider),
- defaultprovider);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement