我已经创建了一个Web API 2项目,虽然API工作正常,但我必须为它们输入一个尾随斜杠.
这导致404
http://www.myURL.com/api/v1/get/addressfromlatlong/UK/50.9742794/-0.1146699
这显示了预期的JSON响应
http://www.myURL.com/api/v1/get/addressfromlatlong/UK/50.9742794/-0.1146699/
我有另一个控制器与自定义操作工作正常.唯一的区别是它有一个整数参数…
它似乎与十进制类型有关,就好像我在URL中稍微变化并使用参数一样,API返回结果而没有问题:
此变体还按预期显示JSON响应
http://www.myURL.com/api/v1/get/addressfromlatlong/UK/50.9742794/?longitude=-0.1146699
这不是世界末日,但我也使用Swagger生成我的api文档,并自动使用上述第一个URL,并包含内置测试,当然,这些测试失败了.对于那些引用api文档的开发人员来说,这并不是那么好.
任何人都可以解释为什么这可能会发生以及如何在没有尾随斜线的情况下让它工作?
路线配置
public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapMvcAttributeRoutes(); routes.MapRoute( name: "Default",url: "{controller}/{action}/{id}",defaults: new { controller = "Home",action = "Index",id = UrlParameter.Optional } ); }
[Route("get/addressfromlatlong/UK/{latitude:decimal=0}/{longitude:decimal=0}")] public AddressDetails GetAddressDetailsByLatLong(decimal latitude,decimal longitude) { AddressDetails addressDetails = repository.GetAddressDetailsByLatLong(latitude,longitude); return addressDetails; }
解决方法
原文地址:https://www.jb51.cc/aspnet/247469.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。