Obtendo “Um valor potencialmente perigoso de Request.Path foi detectado no cliente (&)”

Eu tenho um problema de código legado que requer que eu suporte URLs randoms como se fossem solicitações para a home page. Algumas das URLs contêm caracteres que geram o erro “Um valor potencialmente perigoso de Request.Path foi detectado no cliente (&)” . O site é escrito com ASP.Net MVC 3 (em c #) e está sendo executado no IIS 7.5.

Aqui está um exemplo de URL …

http://mywebsite.com/Test123/This_&_That 

Aqui está como eu tenho a minha configuração de rota pega-tudo (eu tenho outras rotas para pegar páginas específicas) …

 routes.MapRoute( "Default", // Route name "{garb1}/{garb2}", // URL with parameters new { controller = "Website", action = "Home", garb1 = UrlParameter.Optional, garb2 = UrlParameter.Optional } // Parameter defaults ); 

Eu adicionei as seguintes coisas ao meu arquivo web.config …

       

Eu também adicionei o atributo ValidateInput à ação que deveria estar pegando as URLs …

 public class WebsiteController : Controller { [ValidateInput(false)] public ActionResult Home() { return View(); } } 

Mas ainda estou recebendo o erro. Alguma idéia por quê? Perdi alguma coisa? No momento, estou apenas executando no meu servidor de desenvolvimento local (ainda não testei essas correções na produção).

Enquanto você poderia tentar estas configurações no arquivo de configuração

     

Eu evitaria usar caracteres como ‘&’ no caminho da URL substituindo-os por sublinhados.

Eu enfrentei este tipo de erro. chamar uma function da razor.

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

resolva isso mudando a linha

a partir de

  

para

  

onde meu 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 ); 

Se você quiser permitir tags HTML apenas para algumas checkboxs de texto em mvc

Você pode fazer uma coisa

no controlador

  [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(); } 

Estávamos recebendo o mesmo erro no Fiddler ao tentar descobrir por que nosso visualizador de mapa do Silverlight ArcGIS não estava carregando o mapa. No nosso caso, foi um erro de digitação na URL no código. Havia um sinal de igual lá por algum motivo.
http: = // someurltosome / awesome / place
ao invés de
http: // someurltosome / awesome / place

Depois de tirar esse sinal de igual, funcionou muito bem (é claro).