我需要通过ASP.NET REST API的URL(但不在查询字符串部分中)传递可能包含斜杠(' /')的字符串。
为此,我在客户端对它们进行双重编码(进入%252F)然后我计划对服务器端进行编码。 (Microsoft建议使用双重编码技术here)。为了防止这些被过滤掉,我在web.config的这个子集中有以下设置:
<configuration>
<system.web>
<httpRuntime requestPathInvalidCharacters="" />
</system.web>
<system.webServer>
<security>
<requestFiltering allowDoubleEscaping="true">
</requestFiltering>
</security>
<modules runAllManagedModulesForAllRequests="true">
</modules>
</system.webServer>
</configuration>
我还最终从IIS中删除了RequestMonitorModule,以确保这不是问题所在。
问题: 当我打电话
GET /api/country/namecontaining%252Ftheslashcharacter
我收到此错误:
404 Not Found - No HTTP resource was found that matches the request URI
不幸的是,除了我想要到达的路线之外:
[HttpGet]
[Route("country/{0}")]
,我也有这条路线:
[HttpGet]
[Route("country/{0}/city/{1}")]
所以我无法使用可以匹配&#39; /&#39;的正则表达式字符,因为它们只能出现在路径的末尾。
有没有人对我能采取哪些不同的建议来解决这个问题?