private static void ConfigureWebApiOData(HttpConfiguration config) { var controllerSelector = new ODataVersionControllerSelector(config); config.Services.Replace(typeof(IHttpControllerSelector), controllerSelector); // Define a versioned route config.MapODataServiceRoute("V1RouteVersioning", "odata/v1", GetVersionedModel()); controllerSelector.RouteVersionSuffixMapping.Add("V1RouteVersioning", "V1"); // Define a versioned route that doesn't map to any controller config.MapODataServiceRoute("odata/v2", "odata/v2", GetFakeModel()); controllerSelector.RouteVersionSuffixMapping.Add("odata/v2", "V2"); // Define a custom route with custom routing conventions var conventions = ODataRoutingConventions.CreateDefault(); conventions.Insert(0, new CustomNavigationPropertyRoutingConvention()); var customODataRoute = config.MapODataServiceRoute("CustomODataRoute", ODataRoutePrefix, GetCustomRouteModel(), batchHandler: null, pathHandler: new DefaultODataPathHandler(), routingConventions: conventions); config.AddCustomSwaggerRoute(customODataRoute, "/Customers({Id})/Orders") .Operation(HttpMethod.Post) .PathParameter <int>("Id") .BodyParameter <Order>("order"); // Define a route to a controller class that contains functions config.MapODataServiceRoute("FunctionsODataRoute", ODataRoutePrefix, GetFunctionsEdmModel()); // Define a default non- versioned route(default route should be at the end as a last catch-all) config.MapODataServiceRoute("DefaultODataRoute", ODataRoutePrefix, GetDefaultModel()); }
private static void ConfigureWebApiOData(HttpConfiguration config) { var controllerSelector = new ODataVersionControllerSelector(config); config.Services.Replace(typeof(IHttpControllerSelector), controllerSelector); // Define a versioned route config.MapODataServiceRoute("V1RouteVersioning", "odata/v1", GetVersionedModel()); controllerSelector.RouteVersionSuffixMapping.Add("V1RouteVersioning", "V1"); // Define a versioned route that doesn't map to any controller config.MapODataServiceRoute("odata/v2", "odata/v2", GetFakeModel()); controllerSelector.RouteVersionSuffixMapping.Add("odata/v2", "V2"); // Define a custom route with custom routing conventions var conventions = ODataRoutingConventions.CreateDefault(); conventions.Insert(0, new CustomNavigationPropertyRoutingConvention()); var customODataRoute = config.MapODataServiceRoute("CustomODataRoute", ODataRoutePrefix, GetCustomRouteModel(), batchHandler: null, pathHandler: new DefaultODataPathHandler(), routingConventions: conventions); config.AddCustomSwaggerRoute(customODataRoute, "/Customers({Id})/Orders") .Operation(HttpMethod.Post) .PathParameter <int>("Id") .BodyParameter <Order>("order"); // Define a route to a controller class that contains functions config.MapODataServiceRoute("FunctionsODataRoute", ODataRoutePrefix, GetFunctionsEdmModel()); // Define a default non- versioned route(default route should be at the end as a last catch-all) config.MapODataServiceRoute("DefaultODataRoute", ODataRoutePrefix, GetDefaultModel()); bool isPrefixFreeEnabled = System.Convert.ToBoolean(WebConfigurationManager.AppSettings["EnableEnumPrefixFree"]); var uriResolver = isPrefixFreeEnabled ? new StringAsEnumResolver() : new ODataUriResolver(); // Define a route with an enum as a key const string enumRouteName = "EnumODataRoute"; config.MapODataServiceRoute(enumRouteName, ODataRoutePrefix, builder => builder .AddService(ServiceLifetime.Singleton, sp => GetProductWithEnumKeyModel()) .AddService(ServiceLifetime.Singleton, sp => (IEnumerable <IODataRoutingConvention>)ODataRoutingConventions.CreateDefaultWithAttributeRouting(enumRouteName, config)) .AddService(ServiceLifetime.Singleton, sp => uriResolver)); // Define a route with an enum/int composite key const string enumIntCompositeRouteName = "EnumIntCompositeODataRoute"; config.MapODataServiceRoute(enumIntCompositeRouteName, ODataRoutePrefix, builder => builder .AddService(ServiceLifetime.Singleton, sp => GetProductWithCompositeEnumIntKeyModel()) .AddService(ServiceLifetime.Singleton, sp => (IEnumerable <IODataRoutingConvention>)ODataRoutingConventions.CreateDefaultWithAttributeRouting(enumIntCompositeRouteName, config)) .AddService(ServiceLifetime.Singleton, sp => uriResolver)); }
protected void Application_Start() { var config = GlobalConfiguration.Configuration; config.EnableQuerySupport(); var controllerSelector = new ODataVersionControllerSelector(config); config.Services.Replace(typeof(IHttpControllerSelector), controllerSelector); V1.WebApiConfig.Register(config); V2.WebApiConfig.Register(config); }
protected void Application_Start() { var config = GlobalConfiguration.Configuration; config.AddODataQueryFilter(); var controllerSelector = new ODataVersionControllerSelector(config); config.Services.Replace(typeof(IHttpControllerSelector), controllerSelector); V1.WebApiConfig.Register(config); V2.WebApiConfig.Register(config); config.EnsureInitialized(); }
/// <summary> /// Configures the Web API services offered by this project. /// </summary> /// <param name="app">OWIN application builder that provides web services.</param> public void Configuration(IAppBuilder app) { log4net.Config.XmlConfigurator.Configure(); GlobalConfiguration.Configure(WebApiConfig.Register); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); app.UseCors(CorsOptions.AllowAll); var sbConnectionString = ConfigurationManager.AppSettings["ServiceBusConnectionString"]; GlobalHost.DependencyResolver.UseServiceBus(sbConnectionString, "ffcoapisignalr"); var hubConfig = new HubConfiguration { EnableDetailedErrors = true, EnableJavaScriptProxies = true, EnableJSONP = true }; app.MapSignalR("/signalr", hubConfig); var controllerSelector = new ODataVersionControllerSelector(GlobalConfiguration.Configuration); GlobalConfiguration.Configuration.Services.Replace(typeof(IHttpControllerSelector), controllerSelector); MappingManager.Initialize(); var config = GlobalConfiguration.Configuration; // Configure Autofac var builder = new ContainerBuilder(); builder.RegisterModule <ServiceModule>(); builder.RegisterApiControllers(Assembly.GetExecutingAssembly()); var container = builder.Build(); app.UseAutofacMiddleware(container); // Dependency for Web API config.DependencyResolver = new AutofacWebApiDependencyResolver(container); var authorityUrl = ConfigurationManager.AppSettings["IdServerUri"]; app.UseIdentityServerBearerTokenAuthentication( new IdentityServerBearerTokenAuthenticationOptions { Authority = authorityUrl, RequiredScopes = new[] { "FFAccessAPI" } }); app.ConfigureAuth(); ClaimsAuthorization.CustomAuthorizationManager = new AuthorizationManager(); var scope = container.BeginLifetimeScope(); var service = scope.Resolve <ClaimsTransformer>(); app.Use(typeof(ClaimsTransformationMiddleware), service); }