MVC Web API:URL参数值中的点

我已经实现了搜索function,以查找具有(部分)代码作为搜索条件的数据,其中包括a。 (点)在值中,因此应该可以在搜索条件中包含该值。

考虑url:

myhost/api/search/88. 

开箱即用,没有做任何额外的事情,这将导致404错误。 虽然,毫不奇怪,如果我删除点,url工作正常。

我发现这是StackOverflow的可能答案:

    

这样就可以了,但我不确定这是否是最佳解决方案。 我的意思是,如果它是无害的,那么有一个放松的url机制是好的,但是我不希望遇到其他可能比我现在想要的点造成更多伤害的字符。 也许我正在为这个修复打开地狱之门……

我可以相信这个解决方案还是有更安全的替代方案?

如果传递给URL的值是可以由用户输入的搜索词,我不会将我的路由系统配置为处理这些值,因为它们是不可预测的。

您应该对字符串进行编码并将其传递给查询字符串或将其发布并将其绑定到WebAPI中的对象。

打开地狱之门的方面,我认为你应该考虑这个问题中提出的观点 。 如果你必须设置像relaxedUrlToFileSystemMapping这样的东西,这似乎放松了一些ASP.NET MVC的默认安全系统,我倾向于倾向于一个不依赖于这样的变化的解决方案。