Asp.net mvc 4 Web API帮助页复制所有区域的操作
我正在使用WebAPI2,它似乎已经启动了我现有的API调用,只是它复制了我拥有的每个区域的所有调用。例如,假设我有3个区域,其中一个区域中有一个API调用,如下所示:Asp.net mvc 4 Web API帮助页复制所有区域的操作,asp.net-mvc-4,asp.net-mvc-routing,asp.net-web-api2,asp.net-web-api-helppages,Asp.net Mvc 4,Asp.net Mvc Routing,Asp.net Web Api2,Asp.net Web Api Helppages,我正在使用WebAPI2,它似乎已经启动了我现有的API调用,只是它复制了我拥有的每个区域的所有调用。例如,假设我有3个区域,其中一个区域中有一个API调用,如下所示: public IList<string> GetStringList(string id) { //do work here... return new List<string>{"a","b","c"}; } 虽然不是问题的解决方案,但可以使用属性来映射
public IList<string> GetStringList(string id)
{
//do work here...
return new List<string>{"a","b","c"};
}
虽然不是问题的解决方案,但可以使用属性来映射操作的路径,作为临时解决方法 要启用路由属性,请添加config.maphttpAttribute路由()到WebApiConfig中的注册,该注册应位于App_Start文件夹中
public static void Register(HttpConfiguration config)
{
// Attribute routing.
config.MapHttpAttributeRoutes();
// Convention-based routing.
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
启用属性路由后,可以通过操作指定路由:
public class BooksController : ApiController
{
[Route("api/books")]
public IEnumerable<Book> GetBooks() { ... }
}
公共类控制器:ApiController
{
[路线(“api/books”)]
公共IEnumerable GetBooks(){…}
}
您可以查看路由前缀(如上所示),并确保使用页面开头所示的属性启用路由
编辑:
就你而言:
[Route("area2/api/MyAPIController/GetStringList/{id}")]
public IList<string> GetStringList(string id)
{
//do work here...
return new List<string>{"a","b","c"};
}
[路由(“area2/api/MyAPIController/GetStringList/{id}”)]
公共IList GetStringList(字符串id)
{
//在这里工作。。。
返回新列表{“a”、“b”、“c”};
}
认为问题可能与此有关,但不幸的是,这并没有解决问题。我看到了同样的问题。。。你能弄明白吗?不,还没有答案。我很抱歉,但我真的不知道你为什么会提出这个建议。这并没有减少上述重复呼叫的数量,这是我唯一的问题。我不确定你的建议还能解决什么问题。此外,无论如何,我都不是属性路由的超级粉丝:我也不喜欢属性路由,但它确实消除了我从多个区域收到的重复呼叫。我不认为我的答案是解决你的问题,只是一个工作。
[Route("area2/api/MyAPIController/GetStringList/{id}")]
public IList<string> GetStringList(string id)
{
//do work here...
return new List<string>{"a","b","c"};
}