我有一个很大的ASP.NET MVC 5应用程序,现在我想为它实现Web API。但是我想把ApiControllers放在一个单独的项目中。
我在组织Web API路由时遇到问题:
我希望我的主要应用程序路由
host/*
API映射
host/api/*
对于API,我想使用属性路由,但无法以正确的方式设置WebApiConfig。
如何组织这个,保留使用“属性路由”的能力?
答案 0 :(得分:2)
我找到了解决方案:
对于ApiControllers,没有必要重新实现工厂。
在项目Web(主要)中,我们需要:
使用ApiControllers
以这种方式编辑Global.asax
取代:
WebApiConfig.Register(GlobalConfiguration.Configuration);
到
GlobalConfiguration.Configure(WebApiConfig.Register);
config.MapHttpAttributeRoutes();
启用属性路由。
现在,Web API引擎可以在Scope中找到所有ApiControllers。
答案 1 :(得分:0)
在您的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
}
}
现在,此控制器的路由和这些操作将按如下方式映射:
{host} / api / myaction
{主机} / API / otheraction / {ID}
希望有所帮助