我有一個大的ASP.NET MVC 5應用程序,現在我想爲它實現Web API。但是我想把ApiControllers放在一個單獨的項目中。來自外部程序集的ApiControllers的屬性路由
我有問題,爲Web API組織路線:由
host/*
而且在
host/api/*
的API地圖和API的
我想我的主要應用途徑,我想使用屬性路由,但不能以正確的方式設置WebApiConfig。
如何組織這個,保留使用「屬性路由」的能力?
我有一個大的ASP.NET MVC 5應用程序,現在我想爲它實現Web API。但是我想把ApiControllers放在一個單獨的項目中。來自外部程序集的ApiControllers的屬性路由
我有問題,爲Web API組織路線:由
host/*
而且在
host/api/*
的API地圖和API的
我想我的主要應用途徑,我想使用屬性路由,但不能以正確的方式設置WebApiConfig。
如何組織這個,保留使用「屬性路由」的能力?
我找到了解決辦法:
對於ApiControllers沒有必要重新實現工廠。
在項目網站(主),我們需要:
添加依賴與ApiControllers
編輯的Global.asax這樣項目
取代:
WebApiConfig.Register(GlobalConfiguration.Configuration);
至
GlobalConfiguration.Configure(WebApiConfig.Register);
config.MapHttpAttributeRoutes();
,使屬性的路由。
現在Web API引擎可以找到Scope中的所有ApiController。
在你WebApiConfig類:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
}
}
在你的控制器:
[RoutePrefix("api")]
public class MyController : ApiController
{
[Route("myaction")]
public IHttpActionResult MyAction()
{
//code
}
[Route("otheraction/{id}")]
public IHttpActionResult OtherAction(int id)
{
//code
}
}
現在,這個控制器和路線,這些行動將被映射這樣的:
(東道國)/api/myaction
{host}/api/otheraction/{id}
希望它可以幫助
在您的項目中實現Web API的原因是什麼?是否需要爲現有的和新的UI功能提供服務?在這種情況下,我會問,是否有必要將另一個圖層引入已經很大的MVC應用程序中?還是提供一組外部/第三方集成到您的域的服務? –
是的,我們計劃在ClientSide上重新實現UI,併爲第三方服務提供API訪問。 BigApp的舊部分將逐漸消失 – llCorvinuSll