Вызовите контроллер OData и контроллер Web Api с одного и того же префикса url (api/Controller)

Я создаю сервис в asp.net веб API. Я использую его встроенную аутентификацию удостоверения личности aspnet, которая создает AccountControloller, который является ApiController. Помимо AccountController, все мои контроллеры - ODataController, и я также обновил метод Register WebApiConfig для вызова маршрутов оддаты следующим образом:

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 и odatacontrollers из префикса api, но он работает только для контроллера api (api/Account), а не для контроллеров odata (api/Posts). Я знаю, если я изменю префикс odata на odata тогда это будет работать нормально, значит (odata/Posts).. но я хочу назвать оба с одного и того же префикса. Я искал об этом, но не получил ничего полезного. Пожалуйста, помогите относительно этого.

0 ответов

Другие вопросы по тегам