从相同的url前缀(api / Controller)调用OData控制器和Web Api控制器

时间:2015-09-22 09:10:08

标签: .net asp.net-mvc odata asp.net-web-api2 asp.net-web-api

我在asp.net web api中创建服务。我正在使用其内置的aspnet身份验证,它创建一个AccountControloller,它是一个ApiController。除了AccountController,我的所有控制器都是ODataController,我还更新了WebApiConfig的Register方法来调用odata路由,如下所示:

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));

            // Web API routes
            config.MapHttpAttributeRoutes();

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

            ODataConventionModelBuilder builder = new ODataConventionModelBuilder();
            builder.EntitySet<Post>("Posts");

            config.MapODataServiceRoute("api", "api", builder.GetEdmModel());
        }

现在我的问题是我想从前缀api调用api和odatacontrollers但它只适用于api控制器(api / Account)而不是odata控制器(api / Posts)..我知道我是否会改变odata odata的前缀然后它将工作正常(odata / Posts)..但我想从相同的前缀调用两者。我搜索过它但没有得到任何有用的东西。请帮忙解决这个问题。

0 个答案:

没有答案