给定双重转义斜杠字符'/'时REST API路由错误

时间:2014-11-07 19:19:31

标签: asp.net api rest url-routing

我需要通过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;的正则表达式字符,因为它们只能出现在路径的末尾。

有没有人对我能采取哪些不同的建议来解决这个问题?

0 个答案:

没有答案