Asp.net mvc 4 将路径传递给MVC4控制器

Asp.net mvc 4 将路径传递给MVC4控制器,asp.net-mvc-4,Asp.net Mvc 4,客户端需要传递给服务器的参数之一是文件路径,例如path/to/data 很明显,我不能按原样发送它,因为MVC4控制器使用正斜杠来分隔其参数。我想我可以安全地将url转义到文件路径,例如路径%2Fto%2Fdata,将其传输到服务器,然后在服务器上取消它 但这不起作用-MVC4无法识别路线。MVC4是否取消了%2f或其他功能 更新 从浏览器中的响应来看,MVC4似乎在检查文件路径以获取URL中的各个字段之前,正在清除文件路径 如果我再做两次逃跑,它会报告 The request filteri

客户端需要传递给服务器的参数之一是文件路径,例如
path/to/data

很明显,我不能按原样发送它,因为MVC4控制器使用正斜杠来分隔其参数。我想我可以安全地将url转义到文件路径,例如路径%2Fto%2Fdata,将其传输到服务器,然后在服务器上取消它

但这不起作用-MVC4无法识别路线。MVC4是否取消了%2f或其他功能

更新

从浏览器中的响应来看,MVC4似乎在检查文件路径以获取URL中的各个字段之前,正在清除文件路径

如果我再做两次逃跑,它会报告

The request filtering module is configured to deny a request that contains a double escape sequence
A potentially dangerous Request.Path value was detected from the client (%).
在读了一点或一读之后,我尝试了在部分中添加到web.config的建议

<security>
  <requestFiltering allowDoubleEscaping="true" />
</security>
使用通配符

 routes.MapRoute("Path",
           "{*path}",
           new { 
                  controller = "Content", 
                  action = "Index", 
                  path = UrlParameter.Optional }
               );

或者在url编码的querystring参数中,MVC4在检查文件路径以获取url中的各个字段之前,似乎正在解码文件路径。所以你需要对它进行dbl编码。还有

在Web.config中添加/替换

。。在system.web部件中

<httpRuntime requestPathInvalidCharacters="" requestValidationMode="2.0" />
<pages validateRequest="false">

。。。在system.webserver部分中添加

<security>
  <requestFiltering allowDoubleEscaping="true" />
</security>


您是如何做到这一点的?给我们一些代码@Fals,你想要代码的哪一部分?有很多。客户机是用python编写的。我不认为这是相关的,因为我可以看到,它有url编码的路径。或者您想要路由配置?您在url中使用了*吗?谢谢,您是说路径%2Fto%2Fdata无法工作吗?(也就是说,可能是其他错误)控制器中是否有参数“字符串路径”,并且在该参数上方没有与其匹配的路由?试着在控制器中设置一个断点,看看它是否到达那个里。是的,那个是正确的。例如,如果我发送
path\u to\u data
它工作得很好,那么我就理解了查询字符串答案的含义(对我来说有点简单)。我没有意识到您不需要以斜杠分隔的字符串形式编写http请求,但可以直接使用
?filepath=path/to/data/
这是一个比我的更简单的解决方案。