public virtual void Configure(IAppBuilder owinApp) { if (owinApp == null) { throw new ArgumentNullException(nameof(owinApp)); } _webApiConfig = new HttpConfiguration(); _webApiConfig.SuppressHostPrincipal(); _webApiConfig.IncludeErrorDetailPolicy = AppEnvironment.DebugMode ? IncludeErrorDetailPolicy.LocalOnly : IncludeErrorDetailPolicy.Never; _webApiConfig.DependencyResolver = WebApiDependencyResolver; WebApiConfgurationCustomizers.ToList() .ForEach(webApiConfigurationCustomizer => { webApiConfigurationCustomizer.CustomizeWebApiConfiguration(_webApiConfig); }); _server = new HttpServer(_webApiConfig); _webApiConfig.MapHttpAttributeRoutes(); _webApiConfig.Routes.MapHttpRoute(name: "default", routeTemplate: "{controller}/{action}", defaults: new { action = RouteParameter.Optional }); owinApp.UseAutofacWebApi(_webApiConfig); WebApiOwinPipelineInjector.UseWebApi(owinApp, _server, _webApiConfig); _webApiConfig.EnsureInitialized(); }
public virtual void Configure(IAppBuilder owinApp) { if (owinApp == null) { throw new ArgumentNullException(nameof(owinApp)); } _webApiConfig = new HttpConfiguration(); _webApiConfig.SuppressHostPrincipal(); _webApiConfig.IncludeErrorDetailPolicy = AppEnvironment.DebugMode ? IncludeErrorDetailPolicy.LocalOnly : IncludeErrorDetailPolicy.Never; _webApiConfig.DependencyResolver = WebApiDependencyResolver; _webApiConfig.Formatters.JsonFormatter.SerializerSettings.ContractResolver = DefaultJsonContentFormatter.SerializeSettings().ContractResolver; WebApiConfigurationCustomizers.ToList() .ForEach(webApiConfigurationCustomizer => { webApiConfigurationCustomizer.CustomizeWebApiConfiguration(_webApiConfig); }); _server = new HttpServer(_webApiConfig); DefaultInlineConstraintResolver constraintResolver = new DefaultInlineConstraintResolver() { ConstraintMap = { ["apiVersion"] = typeof(ApiVersionRouteConstraint) } }; _webApiConfig.AddApiVersioning(apiVerOptions => { apiVerOptions.ReportApiVersions = true; apiVerOptions.AssumeDefaultVersionWhenUnspecified = true; }); _webApiConfig.MapHttpAttributeRoutes(constraintResolver); if (_webApiConfig.Properties.TryGetValue("MultiVersionSwaggerConfiguration", out object actionObj)) { ((Action)actionObj).Invoke(); } _webApiConfig.Routes.MapHttpRoute(name: "default", routeTemplate: "{controller}/{action}", defaults: new { action = RouteParameter.Optional }); owinApp.UseAutofacWebApi(_webApiConfig); WebApiOwinPipelineInjector.UseWebApi(owinApp, _server, _webApiConfig); _webApiConfig.EnsureInitialized(); }
public virtual void Configure(IAppBuilder owinApp) { if (owinApp == null) { throw new ArgumentNullException(nameof(owinApp)); } _webApiConfig = new HttpConfiguration(); _webApiConfig.SuppressHostPrincipal(); _webApiConfig.SetTimeZoneInfo(TimeZoneInfo.Utc); _webApiConfig.Formatters.Clear(); _webApiConfig.IncludeErrorDetailPolicy = AppEnvironment.DebugMode ? IncludeErrorDetailPolicy.LocalOnly : IncludeErrorDetailPolicy.Never; _webApiConfig.DependencyResolver = WebApiDependencyResolver; _webApiConfig.Services.Replace(typeof(IHttpControllerSelector), new DefaultODataHttpControllerSelector(_webApiConfig)); WebApiConfigurationCustomizers.ToList() .ForEach(webApiConfigurationCustomizer => { webApiConfigurationCustomizer.CustomizeWebApiConfiguration(_webApiConfig); }); _server = new HttpServer(_webApiConfig); _webApiConfig.UseCustomContainerBuilder(() => (IContainerBuilder)WebApiDependencyResolver.GetService(typeof(IContainerBuilder))); var odataModulesAndAssembliesGroups = ApiAssembliesProvider.GetApiAssemblies() .SelectMany(asm => { ODataModuleAttribute[] odataModuleAttributes = asm.GetCustomAttributes <ODataModuleAttribute>().ToArray(); return(odataModuleAttributes.Select(oma => new { ODataModule = oma, Assembly = asm })); }) .GroupBy(odataModuleAndAssembly => odataModuleAndAssembly.ODataModule.ODataRouteName); foreach (var odataModuleAndAssemblyGroup in odataModulesAndAssembliesGroups) { ODataModelBuilder modelBuilder = ODataModelBuilderProvider.GetODataModelBuilder(_webApiConfig, containerName: $"{odataModuleAndAssemblyGroup.Key}Context", @namespace: null); foreach (var odataModuleAndAssembly in odataModuleAndAssemblyGroup) { ODataModuleConfiguration.ConfigureODataModule(odataModuleAndAssemblyGroup.Key, odataModuleAndAssembly.Assembly, modelBuilder); } string routeName = $"{odataModuleAndAssemblyGroup.Key}-odata"; _odataBatchHandler = new DefaultODataBatchHandler(_server); _odataBatchHandler.MessageQuotas.MaxOperationsPerChangeset = int.MaxValue; _odataBatchHandler.MessageQuotas.MaxPartsPerBatch = int.MaxValue; _odataBatchHandler.MessageQuotas.MaxNestingDepth = int.MaxValue; _odataBatchHandler.MessageQuotas.MaxReceivedMessageSize = long.MaxValue; _odataBatchHandler.ODataRouteName = routeName; IEdmModel edmModel = modelBuilder.GetEdmModel(); _webApiConfig.MapODataServiceRoute(routeName, odataModuleAndAssemblyGroup.Key, builder => { builder.AddService(ServiceLifetime.Singleton, sp => edmModel); builder.AddService(ServiceLifetime.Singleton, sp => _odataBatchHandler); }); } owinApp.UseAutofacWebApi(_webApiConfig); WebApiOwinPipelineInjector.UseWebApi(owinApp, _server, _webApiConfig); _webApiConfig.EnsureInitialized(); }
public virtual void Configure(IAppBuilder owinApp) { if (owinApp == null) { throw new ArgumentNullException(nameof(owinApp)); } _webApiConfig = new HttpConfiguration(); _webApiConfig.SuppressHostPrincipal(); _webApiConfig.SetTimeZoneInfo(TimeZoneInfo.Utc); _webApiConfig.Formatters.Clear(); _webApiConfig.IncludeErrorDetailPolicy = AppEnvironment.DebugMode ? IncludeErrorDetailPolicy.LocalOnly : IncludeErrorDetailPolicy.Never; _webApiConfig.DependencyResolver = WebApiDependencyResolver; WebApiConfgurationCustomizers.ToList() .ForEach(webApiConfigurationCustomizer => { webApiConfigurationCustomizer.CustomizeWebApiConfiguration(_webApiConfig); }); _server = new HttpServer(_webApiConfig); _webApiConfig.UseCustomContainerBuilder(() => ContainerBuilder); foreach (IGrouping <string, IODataServiceBuilder> odataServiceBuilders in OdataServiceBuilders.GroupBy(mp => mp.GetODataRoute())) { ODataModelBuilder modelBuilder = ODataModelBuilderProvider.GetODataModelBuilder(_webApiConfig, containerName: $"{odataServiceBuilders.Key}Context", @namespace: odataServiceBuilders.Key); foreach (IODataServiceBuilder odataServiceBuilder in odataServiceBuilders) { odataServiceBuilder.BuildModel(modelBuilder); } string routeName = $"{odataServiceBuilders.Key}-odata"; _odataBatchHandler = new DefaultODataBatchHandler(_server); _odataBatchHandler.MessageQuotas.MaxOperationsPerChangeset = int.MaxValue; _odataBatchHandler.MessageQuotas.MaxPartsPerBatch = int.MaxValue; _odataBatchHandler.MessageQuotas.MaxNestingDepth = int.MaxValue; _odataBatchHandler.MessageQuotas.MaxReceivedMessageSize = long.MaxValue; _odataBatchHandler.ODataRouteName = routeName; IEnumerable <IODataRoutingConvention> conventions = ODataRoutingConventions.CreateDefault(); IEdmModel edmModel = modelBuilder.GetEdmModel(); _webApiConfig.MapODataServiceRoute(routeName, odataServiceBuilders.Key, builder => { builder.AddService(ServiceLifetime.Singleton, sp => conventions); builder.AddService(ServiceLifetime.Singleton, sp => edmModel); builder.AddService(ServiceLifetime.Singleton, sp => _odataBatchHandler); builder.AddService(ServiceLifetime.Singleton, sp => WebApiDependencyResolver); }); } owinApp.UseAutofacWebApi(_webApiConfig); WebApiOwinPipelineInjector.UseWebApi(owinApp, _server, _webApiConfig); _webApiConfig.EnsureInitialized(); }