private static HttpServiceHostFactory GetFactory() { var factory = new HttpServiceHostFactory(); // REVIEW: Set to max to accomodate large file uploads in initial scm setup. factory.Configuration.MaxBufferSize = Int32.MaxValue; factory.Configuration.MaxReceivedMessageSize = Int32.MaxValue; factory.Configuration.EnableHelpPage = true; factory.Configuration.EnableTestClient = true; factory.Configuration.TransferMode = TransferMode.Streamed; factory.Configuration.Formatters.Clear(); factory.Configuration.Formatters.Add(new JsonValueMediaTypeFormatter()); factory.Configuration.Formatters.Add(new JsonMediaTypeFormatter()); #if DEBUG factory.Configuration.IncludeExceptionDetail = true; #endif // Set IoC methods factory.Configuration.CreateInstance = CreateInstance; factory.Configuration.ReleaseInstance = ReleaseInstance; factory.Configuration.ErrorHandlers = (handlers, service, op) => { handlers.Add(KernelContainer.Kernel.Get <TraceErrorHandler>()); }; // Add the authorization handler on specific services method. var existingRequestHandlerFactory = factory.Configuration.RequestHandlers; factory.Configuration.RequestHandlers = (c, e, od) => { if (existingRequestHandlerFactory != null) { existingRequestHandlerFactory(c, e, od); } // Enable authentication based on the configuration setting if (AppSettings.AuthenticationEnabled) { c.Insert(0, KernelContainer.Kernel.Get <BasicAuthorizeHandler>()); } }; return(factory); }
private static ServiceRoute MapServiceRoute <T>(RouteCollection routes, string url, HttpServiceHostFactory factory) { var route = new ServiceRoute(url, factory, typeof(T)); routes.Add(route); return(route); }