Вызовите контроллер 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).. но я хочу назвать оба с одного и того же префикса. Я искал об этом, но не получил ничего полезного. Пожалуйста, помогите относительно этого.