Beispiel #1
0
        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());
        }
Beispiel #2
0
        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));
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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();
        }
Beispiel #5
0
        /// <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);
        }