Eu tenho um problema de código legado que exige que eu suporte urls aleatórias como se fossem solicitações para a página inicial. Alguns dos URLs contêm caracteres que geram o erro "Um valor Request.Path potencialmente perigoso foi detectado do cliente (&)" . O site foi 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
Veja como tenho minha configuração de rota geral (tenho outras rotas para acessar 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 os seguintes itens ao meu arquivo web.config ...
<configuration>
<system.web>
<pages validateRequest="false" />
<httpRuntime requestValidationMode="2.0" />
</system.web>
<configuration>
Também adicionei o atributo ValidateInput à ação que deve capturar os urls ...
public class WebsiteController : Controller
{
[ValidateInput(false)]
public ActionResult Home()
{
return View();
}
}
Mas ainda estou recebendo o erro. Alguma ideia por quê? Perdi alguma coisa? No momento, estou apenas executando no meu servidor de desenvolvimento local (ainda não tentei essas correções na produção).
fonte
Respostas:
Embora você possa tentar essas configurações no arquivo de configuração
Eu evitaria usar caracteres como '&' no caminho da URL, substituindo-os por sublinhados.
fonte
Já enfrentei esse tipo de erro. para chamar uma função de navalha.
resolva isso mudando a linha
de
para
onde meu route.config está
fonte
Se você quiser permitir tags Html apenas para algumas caixas de texto em mvc
Você pode fazer uma coisa
no controlador
fonte
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 do código. Havia um sinal de igual ali por algum motivo.
http: = // someurltosome / awesome / place em
vez de
http: // someurltosome / awesome / place
Depois de tirar o sinal de igual, funcionou muito bem (é claro).
fonte
Verifique se as linhas abaixo estão presentes em seu arquivo web.config
<system.web> <httpRuntime requestPathInvalidCharacters="" /> </system.web>
fonte