asp.net – 为什么REST API会调用错误的方法?
发布时间:2020-12-16 09:56:01 所属栏目:asp.Net 来源:网络整理
导读:我的API控制器中有2个get方法,一个不接受参数,另一个接受整数参数. API页面的路径是/ api / contact.当我在此处导航时,页面将按预期显示. 但是,当我将路径更改为/ api / contact / 4以尝试调用接受整数参数的get方法时,代码只调用不带任何参数的相同get方法.
我的API控制器中有2个get方法,一个不接受参数,另一个接受整数参数.
API页面的路径是/ api / contact.当我在此处导航时,页面将按预期显示. 但是,当我将路径更改为/ api / contact / 4以尝试调用接受整数参数的get方法时,代码只调用不带任何参数的相同get方法.我通过输入断点和调试来了解这一点.出了什么问题? public PhoneInfo[] Get() { return contactRepository.GetAllContacts(); } public PhoneInfo[] Get(int phn) { return contactRepository.GetMessages(phn.ToString()); } 解决方法
WebApi基于反射工作,这意味着您的global.asax / routing配置中的花括号{vars}必须与方法中的相同名称匹配.
默认情况下,global.asax将如下所示: RouteTable.Routes.MapHttpRoute(name: "DefaultApi",routeTemplate: "api/{controller}/{id}",defaults: new { id = System.Web.Http.RouteParameter.Optional }); 因此,为了匹配上面存在id作为var的url是api / contact / {id},该方法需要声明如下: public string Get(int id) return "test"; } 在您的示例中,您正在将参数的默认名称从id更改为phn,导致WebApi无法找到您的方法. 另一个选项可以是使用RouteAttribute: [Route("api/contact/{phn}"),HttpGet] public string Get(int phn) return "another value"; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – 应用程序池标识或模拟
- 如何在ASP.NET Core WebAPI中使用Newtonsoft:Json.NET?
- asp.net-mvc-3 – 如果Controller.OnAuthorization()返回vo
- 什么是Application Server for ASP.NET?
- ASP.NET 5中的手动防伪标记创建和验证
- asp.net – asp服务器错误’无法加载文件或程序集’,但程序
- ASP.NET MVC 4全局授权过滤器强制在AllowAnonymous操作上登
- asp.net-mvc – Razor并在ActionLinks上指定css类名
- asp.net – 使用ASP .Net MVC4处理Web API中的集合内的集合
- ASP.Net Core 2.0和日志记录