private static void CreateControllerFactoryTracer(HttpConfiguration configuration, ITraceWriter traceWriter) { IHttpControllerFactory factory = configuration.ServiceResolver.GetService(typeof(IHttpControllerFactory)) as IHttpControllerFactory; HttpControllerFactoryTracer tracer = new HttpControllerFactoryTracer(factory, traceWriter); configuration.ServiceResolver.SetService(typeof(IHttpControllerFactory), tracer); }
private Collection <ApiDescription> InitializeApiDescriptions() { Collection <ApiDescription> apiDescriptions = new Collection <ApiDescription>(); IHttpControllerFactory controllerFactory = _config.ServiceResolver.GetHttpControllerFactory(); IDictionary <string, HttpControllerDescriptor> controllerMappings = controllerFactory.GetControllerMapping(); if (controllerMappings != null) { foreach (var route in _config.Routes) { ExploreRouteControllers(controllerMappings, route, apiDescriptions); } // remove ApiDescription that will lead to ambiguous action matching. E.g. a controller with Post() and PostComment(). When the route template is {controller}, it produces POST /controller and POST /controller. apiDescriptions = RemoveInvalidApiDescriptions(apiDescriptions); } return(apiDescriptions); }
public HttpControllerFactoryTracer(IHttpControllerFactory innerFactory, ITraceWriter traceWriter) { _innerFactory = innerFactory; _traceWriter = traceWriter; }
public ParentChildControllerFactory(IHttpControllerFactory innerFactory) { _innerFactory = innerFactory; }