J'ai un problème de code hérité qui nécessite de prendre en charge des URL aléatoires comme s'il s'agissait de demandes pour la page d'accueil. Certaines des 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é mon itinéraire général (j'ai d'autres itinéraires 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 je reçois toujours l'erreur. Des idées pourquoi? Ai-je manqué quelque chose? Pour le moment, je ne fais que tourner sur mon serveur de développement local (je n'ai pas encore essayé ces correctifs en production).
Bien que vous puissiez essayer ces paramètres dans le fichier de configuration
<system.web>
<httpRuntime requestPathInvalidCharacters="" requestValidationMode="2.0" />
<pages validateRequest="false" />
</system.web>
J'éviterais d'utiliser des caractères comme '&' dans le chemin de l'URL en les remplaçant par des soulignés.
J'ai fait face à ce type d'erreur. appeler une fonction de rasoir.
public ActionResult EditorAjax(int id, int? jobId, string type = ""){}
résoudre cela en changeant la ligne
de
<a href="/ScreeningQuestion/EditorAjax/5&jobId=2&type=additional" />
à
<a href="/ScreeningQuestion/EditorAjax/?id=5&jobId=2&type=additional" />
où est mon 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
);
Si vous souhaitez autoriser les balises HTML uniquement pour quelques zones de texte dans MVC
Tu peux faire une chose
dans le contrôleur
[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();
}
Vérifiez que les lignes ci-dessous sont présentes dans votre fichier web.config
<system.web>
<httpRuntime requestPathInvalidCharacters="" />
</system.web>
Nous avons eu cette même erreur dans Fiddler en essayant de comprendre pourquoi notre afficheur de carte Silverlight ArcGIS ne chargeait pas la carte . Il y avait un signe égal dedans pour une raison quelconque.
http: = // someurltosome/awesome/place
au lieu de
http: // someurltosome/awesome/place
Après avoir éliminé ce signe égal, cela a bien fonctionné (bien sûr).