Я создаю службу WebApi2, и один из методов, которые я хочу реализовать, представляет HTTP GET из объекта во внутренней древовидной структуре - так что запрос будет связан с линии:Не удалось найти маршрут с помощью WebApi2 ApiController
GET /values/path/path/to/object/in/tree
Так что я хочу, чтобы мой метод получить «путь/к/объект/в/дерево».
Однако, я просто получаю 404, когда запускаю это, и мне интересно, что я получаю 404, который отличается от стандартного IIS 404. Он называется «Ошибка сервера в приложении /», тогда как один для полностью недопустимого ресурса называется «HTTP Error 404.0 - Not Found».
Я играю с шаблоном по умолчанию, чтобы попытаться посмотреть, смогу ли я заставить это работать, следовательно, сходство.
У меня есть это для моего RouteConfig
public static void RegisterRoutes(RouteCollection routes)
{
var route = routes.MapRoute(
name: "CatchAllRoute",
url: "values/path/{*pathValue}",
defaults: new { controller = "Values", action = "GetPath" });
}
И это мой ValuesController
:
[System.Web.Mvc.AuthorizeAttribute]
[RoutePrefix("values")]
public class ValuesController : ApiController
{
[Route("test/{value}")]
[HttpGet]
public string Test(string value)
{
return value;
}
[HttpGet]
public string GetPath(string pathValue)
{
return pathValue;
}
}
Интересно, если я извлечь из Controller
, а не ApiController
он работает нормально, но потом нормальный маршрутизации атрибут не работает.
Я пробовал следовать методологии в this post (http://www.tugberkugurlu.com/archive/asp-net-web-api-catch-all-route-parameter-binding), но я не мог заставить ее работать.
Я уверен, что мне не хватает чего-то глупого, но, потратив несколько часов на это, я подумал, что разумно спросить, что я делаю неправильно.
Благодаря
M
Вы не забыли сделать 'config.MapHttpAttributeRoutes();' зарегистрировать маршруты атрибутов? – crunchy