获取“从客户端(&)检测到潜在危险的Request.Path值”
我有一个遗留的代码问题,需要我支持随机的url,就好像它们是对主页的请求一样。 某些URL中包含字符,会生成错误“从客户端(&)检测到潜在危险的Request.Path值” 。 该网站是用ASP.Net MVC 3(在C#中)编写的,并在IIS 7.5上运行。
这是一个示例url…
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属性的动作,应该赶上的url…
 public class WebsiteController : Controller { [ValidateInput(false)] public ActionResult Home() { return View(); } } 
但是我仍然得到错误。 任何想法为什么? 我错过了什么? 现在我只是在我的本地开发服务器上运行(我还没有在生产中尝试过这些修复)。
虽然你可以尝试在configuration文件中的这些设置
 <system.web> <httpRuntime requestPathInvalidCharacters="" requestValidationMode="2.0" /> <pages validateRequest="false" /> </system.web> 
我会避免在URLpath中使用像'&'这样的字符来replace下划线。
我遇到了这种types的错误。 从剃刀调用一个函数。
 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 ); 
如果你想允许Html标签仅用于mvc中的less数文本框
你可以做一件事
在控制器中
  [ValidateInput(false)] public ActionResult CreateNewHtml() //view { return View(); } [ValidateInput(false)] [HttpPost] public ActionResult CreateNewHtml(cbs obj)//view cbs is database class { repo.AddHtml(obj); return View(); } 
 在试图找出为什么我们的Silverlight ArcGIS地图查看器不加载地图时,我们在Fiddler中得到了同样的错误。 在我们的案例中,这是代码中URL的拼写错误。 出于某种原因,在那里有一个等号。 
  HTTP:// = someurltosome /真棒/位 
 代替 
  HTTP:// someurltosome /真棒/位 
拿出那个等号后,它工作得很好(当然)。