asp.net-mvc – 为什么这两个API方法会产生冲突
我们正在开发一个MVC4 API应用程序,遇到了一个我们没有解释的奇怪问题.
API控制器有两种方法: [AllowAnonymous] [AcceptVerbs("Post","Get")] public ArtifactContent Post(string userName,string password,string id) ... 和 [AllowAnonymous] [AcceptVerbs("Get")] public HttpResponseMessage Get(string userName,string id,EnumType contentType) ... 虽然这两种方法显然有不同的方法签名,但我们收到以下错误消息:
我们可以通过进行这两个更改中的一个来解决错误,但我真的想知道为什么.NET在两个签名明显不同时抛出错误: >从Post方法中删除Get AcceptVerbs属性 解决方法
这是ASP.NET Web API中已知的行为/问题/错误.
简而言之,当尝试将传入的HTTP请求与控制器内的相关操作相匹配时,操作选择器(IHttpActionSelector)将不会考虑Enums. 原因是默认情况下,只从RouteData中选择基本类型(即int,string等)以查找匹配的操作.枚举不是其中之一,所以它被忽略了,因此,即使你的动作与编译器的角度有不同的签名,在动作选择器的眼中它们是相同的. 您可以在此处跟踪潜在修复的进度 – http://aspnetwebstack.codeplex.com/workitem/312 就目前而言,正如你自己所说,最好的解决方法是将枚举作为int或string传递(并转换为枚举). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Asp.net下利用Jquery Ajax实现用户注册检测(验证用户名是否
- FluentSecurity是否取代了Asp.Net会员提供商,或者它应该与它
- 在计算机上运行.net的许多版本
- asp.net – Visual Studio 2008,2010或2012(v11)是否写入使
- asp.net-mvc-3 – 可用会员入门套件/成员资料用于ASP.NET M
- asp.net-mvc – ASP.Net MVC不显眼的日期范围验证
- 在ASP.NET中导入一个类
- ASP.NET Core MVC内置服务的使用
- wcf – ASP.NET MVC中的OpenId身份验证是一项宁静的服务吗?
- 来自asp.net会员身份验证的userid?
- 四种为HttpClient添加默认请求报头的解决方案
- asp.net – 多个客户端应该有一个项目副本,还是每
- asp.net – Web配置转换不工作
- asp.net-mvc – 为多语言ASP.NET MVC Web应用程序
- asp.net-web-api – AttributeRouting不能与Http
- Asp.net中的Session和Cookie
- asp.net-mvc – Ajax.BeginForm和验证
- ASP.Net MVC 3应用程序在应用程序池回收时随机失
- asp.net-mvc – 具有接受routeValues和htmlAttri
- asp-classic – 用经典的asp添加自定义标题