Ejemplo n.º 1
0
        public static void Register(HttpConfiguration config)
        {
            // OData configuration
            ODataConventionModelBuilder builder = new ODataConventionModelBuilder();
            builder.EntitySet<Author>("authors");
            builder.EntitySet<Blog>("blogs");
            builder.EntitySet<Comment>("comments");
            builder.EntitySet<Post>("posts");
            builder.ContainerName = "BlogItDataService";

            config.Routes.MapODataServiceRoute("OData", "api/odata", builder.GetEdmModel());

            var queryAttributes = new EnableQueryAttribute()
            {
                PageSize = 100,
                MaxTop = 100,
                EnsureStableOrdering = false
            };
            config.AddODataQueryFilter(queryAttributes);

            // Web API attribute routing
            config.MapHttpAttributeRoutes();

            // Additional formatters
            config.Formatters.Add(new BsonMediaTypeFormatter());
        }
Ejemplo n.º 2
0
        public static void Register(HttpConfiguration config)
        {
            // Web API configuration and services
            
            // Configure Web API to use only bearer token authentication.
            config.SuppressDefaultHostAuthentication();
            config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));

            // Routes
            config.MapHttpAttributeRoutes();

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{action}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );

            // OData

            // Query support
            //config.EnableQuerySupport();
            var odataFilter = new EnableQueryAttribute() { MaxExpansionDepth = 4 };
            config.AddODataQueryFilter(odataFilter);

            //config.Routes.MapODataRoute(
            //    routeName: "ODataRoute",
            //    routePrefix: "odata",
            //    model: edm,
            //    batchHandler: new BatchHandler(GlobalConfiguration.DefaultServer));

            // Add the CompositeKeyRoutingConvention
            var conventions = System.Web.Http.OData.Routing.Conventions.ODataRoutingConventions.CreateDefault();
            conventions.Insert(0, new CompositeKeyRoutingConvention());

            // Routes
            var edm = DbUtility.GetWealthEconomyContextEdm();
            config.Routes.MapODataServiceRoute(
                routeName: "ODataRoute",
                routePrefix: "odata",
                model: edm,
                pathHandler: new System.Web.Http.OData.Routing.DefaultODataPathHandler(),
                routingConventions: conventions,
                batchHandler: new BatchHandler(GlobalConfiguration.DefaultServer));

            // Json formatter
            config.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;

            // Exception logger
            config.Services.Add(typeof(IExceptionLogger), new ElmahExceptionLogger());

            // Exception handler
            config.Services.Replace(typeof(IExceptionHandler), new GenericExceptionHandler());
        }
Ejemplo n.º 3
0
        public void RunQueryableOnAllPossibleTypes(Type type, string queryString)
        {
            int seed = RandomSeedGenerator.GetRandomSeed();
            Random r = new Random(seed);
            Type generic = typeof(IEnumerable<>);
            var collectionType = generic.MakeGenericType(type);

            Type listType = typeof(List<>).MakeGenericType(type);
            var array = Activator.CreateInstance(listType);

            EnableQueryAttribute q = new EnableQueryAttribute();
            var configuration = new HttpConfiguration();
            configuration.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;
            configuration.Routes.MapHttpRoute("ApiDefault", "api/{controller}/{id}", new { id = RouteParameter.Optional });
            var request = new HttpRequestMessage(HttpMethod.Get, "http://test/api/Objects?" + queryString);
            request.Properties.Add(HttpPropertyKeys.HttpConfigurationKey, configuration);
            var controllerContext = new HttpControllerContext(
                configuration,
                configuration.Routes.GetRouteData(request),
                request);
            var actionContext = new HttpActionContext(controllerContext, new ReflectedHttpActionDescriptor()
            {
                Configuration = configuration
            });
            var context = new HttpActionExecutedContext(actionContext, null);
            context.Response = new HttpResponseMessage(System.Net.HttpStatusCode.OK);
            context.Response.Content = new ObjectContent(collectionType, array, new JsonMediaTypeFormatter());

            q.OnActionExecuted(context);

            Console.WriteLine(context.Response.Content.ReadAsStringAsync().Result);
            Assert.Equal(HttpStatusCode.OK, context.Response.StatusCode);
        }