asp.net-mvc – 如何绕过ASP.NET Web API中发现的多个操作的异常
发布时间:2020-12-16 06:47:44 所属栏目:asp.Net 来源:网络整理
导读:在尝试为以下问题找到解决方案时: MVC Web Api Route with default action not working 大多数情况下,我遇到了“发现多个动作”的问题.如果路由机制发现多个与路由匹配的操作,则会抛出异常500. 例如,ValuesController中有两个操作: [HttpGet]public IEnume
在尝试为以下问题找到解决方案时:
MVC Web Api Route with default action not working 大多数情况下,我遇到了“发现多个动作”的问题.如果路由机制发现多个与路由匹配的操作,则会抛出异常500. 例如,ValuesController中有两个操作: [HttpGet] public IEnumerable<String> Active() { var result = new List<string> { "active1","active2" }; return result; } public IEnumerable<string> Get() { return new[] { "value1","value2" }; } 与默认路由匹配: routes.MapHttpRoute( name: "DefaultApi",routeTemplate: "api/{controller}/{id}",defaults: new { id = RouteParameter.Optional } ); 同 GET: /api/values 将发现错误多个动作被发现. 我的问题:如何通过选择指定的操作来绕过异常“找到多个动作”(选择第一个匹配的动作也没关系). 更新1:从tugberk的评论更新,感谢指出. 更新2:Mike的评论更新,似乎问题不正确,所以我通过不提及路由约束来改变问题的方式. 谢谢 解决方法
首先,除非您对其应用HttpGet属性,否则这些路径不应该与Active动作匹配.我会假设你已经这样做了.第二件事是你想要的不合逻辑.您想提出获取请求并执行两个相同的操作.您现在正在使用所谓的基于HTTP方法的路由.对于你的情况,我确信所谓的基于行动的路由是最好的.
假设你有以下两个动作: [HttpGet] public IEnumerable<String> Active() { var result = new List<string> { "active1","active2" }; return result; } [HttpGet] public IEnumerable<string> Retrieve() { return new[] { "value1","value2" }; } 你的路线应该如下: routes.MapHttpRoute( name: "DefaultApi",routeTemplate: "api/{controller}/{action}/{id}",defaults: new { id = RouteParameter.Optional } ); 然后,您可以请求具有以下URI的人:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – 使用ELMAH记录EventLog中的错误
- asp.net – 会话超时在IIS 7中如何工作?
- ASP.NET’Session.Remove(key)’v / s’Session(key)= noth
- asp.net-web-api – 为什么我的超级简单的ASP.NET Web API(
- 在ASP经典中编写JavaScript
- asp.net – 如何确定IUSR密码
- 深蓝词库转换1.7发布,支持QQ分类词库解析
- TeamCity – 在ASP.net网站上发布的问题
- asp.net-web-api – 如何配置Web API 2和结构图
- asp.net – 对齐和填充为asp:CheckBoxList