我正面臨Web API 2路由的文字段問題。Web API 2路由失敗的文字段
在一個項目中,我有ASP.NET MVC和WebAPI2一起運行,項目也運行MVC區域。
在每個區域下,都有包含API的API文件夾。我在嘗試請求以下網址時遇到問題: {主機}/accesscontrol/api/reporting /預訂。這裏
- 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我試過了,同樣的錯誤結果! –