首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从路由配置到属性路由

从路由配置到属性路由
EN

Stack Overflow用户
提问于 2017-01-23 10:13:21
回答 1查看 623关注 0票数 0

我在我的ASP.NET Web 2项目中配置了以下路由:

代码语言:javascript
复制
        config.Routes.MapHttpRoute(
            name: "1MandatoryStringParameter",
            routeTemplate: "api/{controller}/{data}",
            defaults: null,
            constraints: new { data = @".+?" }

它与以下控制器方法(注意ArrayInput属性)一起使用:

代码语言:javascript
复制
[ArrayInput("data",Separator = ',')]
public async Task<IHttpActionResult> Get(int[] data)
{
...
}

我想使用属性路由代替。

我试图用以下属性替换对MapHttpRoute的调用:

代码语言:javascript
复制
[HttpGet]
[Route("api/ActionsForItemTypesList/{data:regex(.+?)}", Name = "1MandatoryStringParameter")]

从盒子里拿出来就不行了。我无法使用这样的URL访问我的方法:

代码语言:javascript
复制
api/ActionsForItemTypesList/1,2

如果找不到404方法。

这在路由配置中运行得很好。

任何帮助都很感激。

编辑:修正了客户端URL。

编辑2:这是一个ApiExplorer问题(斯瓦什巴克尔杠杆ApiExplorer)

如果我修改路由属性并删除参数(即。( {data}) ApiDescription变得可用。

EN

回答 1

Stack Overflow用户

发布于 2017-01-23 10:17:28

确保启用了属性路由:

代码语言:javascript
复制
config.MapHttpAttributeRoutes();

Route属性中,还指定了data参数必须是路径的一部分,而不是查询字符串。因此,请确保从客户端正确调用该操作:

代码语言:javascript
复制
api/ActionsForItemTypesList/1,2

还请注意,在路由属性中指示的前缀是api/ActionsForItemTypesList,而不是api/Controller,就像您试图调用它那样。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41803823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档