【发布时间】:2010-11-30 00:10:20
【问题描述】:
我有一个 ASP.NET MVC 应用程序,其路由允许通过 /search/
当我提供“search/abc”时,它运行良好,但是当我提供“/search/a+b+c”(正确的 url 编码)时,IIS7 拒绝请求并显示 HTTP 错误 404.11(请求过滤模块配置为拒绝包含双转义序列的请求)。首先,它为什么要这样做?如果它是 URL 的一部分,而不是作为查询字符串的一部分,它似乎只会引发错误( /transmit?q=a+b+c 可以正常工作)。
现在我可以在 web.config 的安全部分启用双重转义请求,但我犹豫是否这样做,因为我不明白其中的含义,也不知道为什么服务器会拒绝请求“a+b+ c" 作为 URL 的一部分,但接受作为查询字符串的一部分。
有人可以解释并给出一些建议吗?
【问题讨论】:
-
我还尝试了调用 Server.UrlPathEncode 的可能更正确的选项,并在标记中以
/search/a%2520b%2520c结束,这导致了一个可爱的“A可能从客户端检测到危险的 Request.Path 值 (%)”错误。看来你赢不了。
标签: c# asp.net-mvc iis-7