我遇到了一个遗留代码问题,要求我支持随机URL,就好像它们是对主页的请求一样。一些URL中包含字符,这些字符会生成错误“检测到来自客户端(&)的潜在危险的Request.Path值”。该网站是使用ASP.Net MVC 3(C#)编写的,并且在IIS 7.5上运行。
这是一个示例网址...
http://mywebsite.com/Test123/This_&_That
这是我设置全部路由的方式(我还有其他路由来捕获特定页面)...
routes.MapRoute(
"Default", // Route name
"{garb1}/{garb2}", // URL with parameters
new { controller = "Website", action = "Home", garb1 = UrlParameter.Optional, garb2 = UrlParameter.Optional } // Parameter defaults
);
我已经在我的web.config文件中添加了以下内容...
<configuration>
<system.web>
<pages validateRequest="false" />
<httpRuntime requestValidationMode="2.0" />
</system.web>
<configuration>
我还向应该捕获网址的操作添加了ValidateInput属性。
public class WebsiteController : Controller
{
[ValidateInput(false)]
public ActionResult Home()
{
return View();
}
}
但是我仍然遇到错误。有什么想法吗?我错过了什么?现在,我只是在本地开发服务器上运行(我还没有在生产中尝试过这些修复程序)。
1
有一个设置允许某些字符,待我回到计算机后不久便会检查……但是您可以对您的URL进行urlencode吗?
—
Adam Tuliper-MSFT
—
Marijn
我不知道网站出于什么原因在内部尝试进行重定向,而该重定向正在创建类似“ localhost /:// localhost / myWebsiteName ” 的URL ,这给了我同样的错误。我不知道为什么ASP.net管道将其视为危险的请求URL。
—
RBT
就我而言,我在网址中缺少斜线。要做的第一件事是检查URL中是否有错字。
—
Kishan Vaishnav