J'ai un problème de code hérité qui nécessite que je prenne en charge les URL aléatoires comme s'il s'agissait de demandes pour la page d'accueil. Certaines URL contiennent des caractères qui génèrent l'erreur «Une valeur Request.Path potentiellement dangereuse a été détectée par le client (&)» . Le site est écrit avec ASP.Net MVC 3 (en C #) et s'exécute sur IIS 7.5.
Voici un exemple d'URL ...
http://mywebsite.com/Test123/This_&_That
Voici comment j'ai configuré ma route fourre-tout (j'ai d'autres routes pour attraper des pages spécifiques) ...
routes.MapRoute(
"Default", // Route name
"{garb1}/{garb2}", // URL with parameters
new { controller = "Website", action = "Home", garb1 = UrlParameter.Optional, garb2 = UrlParameter.Optional } // Parameter defaults
);
J'ai ajouté les éléments suivants à mon fichier web.config ...
<configuration>
<system.web>
<pages validateRequest="false" />
<httpRuntime requestValidationMode="2.0" />
</system.web>
<configuration>
J'ai également ajouté l'attribut ValidateInput à l'action qui devrait intercepter les URL ...
public class WebsiteController : Controller
{
[ValidateInput(false)]
public ActionResult Home()
{
return View();
}
}
Mais j'obtiens toujours l'erreur. Des idées pourquoi? Ai-je oublié quelque chose? Pour le moment, je suis juste en cours d'exécution sur mon serveur de développement local (je n'ai pas encore essayé ces correctifs en production).