У меня возникла проблема с маршрутизацией Web API 2 для литеральных сегментов.Ошибка маршрутизации Web API 2 для литерального сегмента
В одном проекте у меня ASP.NET MVC и WebAPI2 работают вместе, проект также работает с областями MVC.
Под каждой областью есть папка API, которая содержит API. Я сталкиваюсь с проблемой при попытке запросить следующий URL-адрес: {host}/accesscontrol/api/reports/orders.
- AccessControl здесь название площади
- отчетность является контроллер
- заказов является буквальным сегментом.
Ошибка я получаю: Никаких действий не было найдено на контроллере «Отчетность», который соответствует запросу.
Это контроллер, который должен получить этот запрос:
[RoutePrefix("accesscontrol/api/reporting")]
public class ReportingController : ApiController
{
[Route("bookings")]
[ResponseType(typeof(Booking))]
[HttpGet]
public async Task<IHttpActionResult> Bookings(string q = null)
{
//Code to get data
return Ok(bookings);
}
}
Когда я удалить [Route('Bookings')]
атрибут, запрос работает хорошо, если независимо Бронирования сегмент или нет.
Это конфигурация маршрутизации под зоной класса регистрации:
public override void RegisterArea(AreaRegistrationContext context)
{
context.Routes.MapHttpRoute(
"AccessControlApi_default",
"accesscontrol/api/{controller}/{id}",
new { id = RouteParameter.Optional }
);
context.MapRoute(
"AccessControl_default",
"accesscontrol/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
);
}
Как я могу позволить приложение, чтобы понять эти буквенные сегменты под областями?
Редактировать
Я звоню RegisterAllAreas
в Global.asax.cs файл следующим образом:
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
}
Можете ли вы попробовать отредактировать «[Маршрут (« заказы »)]« на »[Маршрут (« заказы/{q?} »)]» И посмотреть, не имеет значения? – valentin
@valentin Я пробовал, тот же результат ошибки! –