我们遇到WebApi2属性路由问题。我们最近升级到MVC5和Web Api 2.作为升级的一部分,我们将Web Api转移到使用属性路由。
我们的一个API调用允许使用纬度和经度边界框来请求数据。
https://myapi.com/v1/things/area/ {toplat} / {leftlon} / {botlat} / {rightlon}
这在之前的api中有效,但在新的api中没有。我们无法找到允许其工作的配置。最后一个参数{rightlon}是一个double,xx.XXX被解释为文件扩展名。
将参数指定为double {toplat:double}没有任何影响。我们无法轻易强制旧版客户端更新,以包含一些帖子建议的尾部斜杠。这个配置更改对我们来说也没有用。 Why is my Web API method with double args not getting called?
有没有人找到一种方法在WebApi2中使用属性路由来允许具有double / decimal / float作为最后一个路由参数的路由?
答案 0 :(得分:0)
解决。
链接文章确实包含了解决方案,但在属性路由上也需要正确的格式。
[HttpGet] [路线(“〜/ v1 / things / area / {toplat:double} / {leftlon:double} / {botlat:double} / {rightlon:double}”)]
web.config中的
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="OPTIONSVerbHandler" />
<remove name="TRACEVerbHandler" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
<modules>
<remove name="UrlRoutingModule-4.0" />
<add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
</modules>
</system.webServer>