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/
这是一个比我的更简单的解决方案。