Я использую атрибут маршрутизации с Web API, и все работает, как ожидалось, если я прошу URL /MyAPI/список со следующим контроллером:Маршрут по умолчанию при использовании атрибута ASP.NET MVC маршрутизации
[RoutePrefix("myapi")]
public class MyController : ApiController
{
[HttpGet]
[Route("list")]
public async Task<string> Get()
{
// Return result
}
}
Однако, я хотел бы мой Get() метода быть по умолчанию, т.е. при запросе URL /MyAPI (без /списка части).
Но если я удалить "список" часть маршрута атрибут как так ...
[RoutePrefix("myapi")]
public class MyController : ApiController
{
[HttpGet]
[Route] // Default route
public async Task<string> Get()
{
// Return result
}
}
... Я получаю ошибку 403,14 говоря
«Веб-сервер настроен так, чтобы не отображать содержимое этого каталога ».
Любые идеи о том, что может быть причиной этого?
Спасибо!
Edit: Если я прошу контроллер API, используя шаблон маршрута по умолчанию, как /API/MyAPI, он отображает до Получить() метод, как и ожидалось.
По умолчанию маршрут зарегистрирован после атрибутов маршрутов:
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
У вас есть физический/виртуальный каталог с именем 'myapi'? – haim770
@ haim770 Хм, действительно, это проблема! Если я переименую свой префикс маршрута, маршрут по умолчанию работает так, как ожидалось! Большое спасибо за Вашу помощь! Не стесняйтесь публиковать его в качестве ответа, и я соглашусь с ним. :) –
Это просто напомнило мне о http://stackoverflow.com/a/24533925/1625737 - Не уверен, что он квалифицируется как дубликат, хотя – haim770