我在ASP.NET Web API 2项目中配置了以下路由:
config.Routes.MapHttpRoute(
name: "1MandatoryStringParameter",
routeTemplate: "api/{controller}/{data}",
defaults: null,
constraints: new { data = @".+?" }
它与以下控制器方法一起使用(请注意ArrayInput属性):
[ArrayInput("data",Separator = ',')]
public async Task<IHttpActionResult> Get(int[] data)
{
...
}
我想改用属性路由。
我尝试使用以下属性替换对 MapHttpRoute 的调用:
[HttpGet]
[Route("api/ActionsForItemTypesList/{data:regex(.+?)}", Name = "1MandatoryStringParameter")]
开箱即用它不起作用。我无法通过以下网址访问我的方法:
api/ActionsForItemTypesList/1,2
如果找不到404方法。
这适用于路由配置。
任何帮助表示感谢。
编辑:修复了客户端网址。
编辑2 :这是一个ApiExplorer问题(Swashbuckle杠杆ApiExplorer)
如果我修改Route属性并删除参数(即{data}),则ApiDescription可用。
答案 0 :(得分:0)
确保您已启用属性路由:
config.MapHttpAttributeRoutes();
同样在Route
属性中,您已指定data
参数必须是路径的一部分而不是查询字符串。因此,请确保从客户端正确调用操作:
api/ActionsForItemTypesList/1,2
另请注意,您在路线属性中指明的前缀是api/ActionsForItemTypesList
而不是api/Controller
,就像您尝试调用它一样。