使用有效URL从客户端(?)检测到潜在危险的Request.Path值

Nig*_*l89 5 c# urlencode .net-4.0 iis-7.5 asp.net-mvc-4

我有几个星期在IIS 7.5上运行的ASP.NET MVC 4 Web应用程序,我注意到最近我遇到了很多以下错误:
System.Web.HttpException (0x80004005): A potentially dangerous Request.Path value was detected from the client (?). at System.Web.HttpRequest.ValidateInputIfRequiredByConfig() at System.Web.HttpApplication.PipelineStepManager.ValidateHelper(HttpContext context)

我知道当URL路径包含非法时会导致此异常字符,但奇怪的是,在我的情况下,URL是有效的.以下是URL的一个示例:www.mysite.com/myApp/bookTitle?chapter=12&page=278.

但是,当我尝试任何报告的链接时,它们工作正常,没有任何例外.

通过查看错误日志,我注意到查询字符串不显示为QUERY_STRING变量的一部分,但它与PATH_INFO变量中的其余路径一起包含,如下所示:
/myApp/bookTitle?chapter=12&page=278.所以似乎(?)不被识别为路径和查询之间的分隔符(可能是因为某种URL编码)但我不知道如何解决这个问题.

任何帮助将不胜感激.

Mar*_*own 1

当 ASP.NET 收到带有“?”的请求时 字符编码为“%3F”,它会给出此错误消息。同时它将“%3F”解码为“?” Request["PATH_INFO"] 或 Request.PathInfo 变量中的字符。

如果您查看 Request["HTTP_URL"] 或 Request.Url.OrigionalString 您可能会看到不同的东西。