Skip to content

Instantly share code, notes, and snippets.

@tomasaschan
Created March 5, 2015 11:21
Show Gist options
  • Save tomasaschan/0980448e3f7546f176bb to your computer and use it in GitHub Desktop.
Save tomasaschan/0980448e3f7546f176bb to your computer and use it in GitHub Desktop.
WebApiConfig.cs
public static class WebApiConfig
{
public static void Configure(HttpConfiguration config)
{
var container = new WindsorContainer()
// These two are extension methods from our project
// They just set up our DI container and register all our services
.ConfigureForWebApi()
.ConfigureForAuditLogging();
config.MapHttpAttributeRoutes();
config.Filters.RegisterGlobalFilters(container); // See private helper method below
// This service activator simply instantiates controllers by resolving them from the
// DI container, to allow dependency injection in controllers
config.Services.Replace(typeof(IHttpControllerActivator), new WindsorServiceActivator(container));
// Helper class which defines a bunch of AutoMapper maps
AutoMapperConfig.Configure();
}
private static void RegisterGlobalFilters(this HttpFilterCollection filters, IWindsorContainer container)
{
var allFilters = container.ResolveAll<IActionFilter>();
foreach (var filter in allFilters)
{
filters.Add(filter);
}
foreach (var filter in container.ResolveAll<IAuthenticationFilter>())
{
filters.Add(filter);
}
foreach (var filter in container.ResolveAll<IAuthorizationFilter>())
{
filters.Add(filter);
}
foreach (var filter in container.ResolveAll<IExceptionFilter>())
{
filters.Add(filter);
}
foreach (var filter in container.ResolveAll<IFilter>())
{
filters.Add(filter);
}
foreach (var filter in container.ResolveAll<IOverrideFilter>())
{
filters.Add(filter);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment