从客户端(&)检测到“潜在危险的Request.Path值”怎么办?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (18)

我有一个遗留代码问题,需要我支持随机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();
    }
}

但我仍然收到错误。为什么?我错过了什么?现在我只是在我的本地开发服务器上运行(我还没有在生产环境中尝试过这些修复)。

提问于
用户回答回答于

当你可以在配置文件中尝试这些设置时,

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

我将避免在URL路径中使用‘&’这样的字符,用下划线替换它们。

用户回答回答于

我遇到了这种类型的错误。从razor调用一个函数。

public ActionResult EditorAjax(int id, int? jobId, string type = ""){}

通过改变线来解决这个问题

<a href="/ScreeningQuestion/EditorAjax/5&jobId=2&type=additional" /> 

<a href="/ScreeningQuestion/EditorAjax/?id=5&jobId=2&type=additional" />

我的route.config在

routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Index", id = UrlParameter.Optional }, new string[] { "RPMS.Controllers" } // Parameter defaults
        );

扫码关注云+社区