Ich habe ein Legacy-Code-Problem, bei dem ich zufällige URLs unterstützen muss, als wären sie Anforderungen für die Homepage. Einige der URLs enthalten Zeichen, die den Fehler "Ein möglicherweise gefährlicher Request.Path-Wert wurde vom Client (&) erkannt" erzeugen . Die Site wurde mit ASP.Net MVC 3 (in C #) geschrieben und läuft unter IIS 7.5.
Hier ist eine Beispiel-URL ...
http://mywebsite.com/Test123/This_&_That
So habe ich meine Catch-All-Route eingerichtet (ich habe andere Routen, um bestimmte Seiten zu fangen) ...
routes.MapRoute(
"Default", // Route name
"{garb1}/{garb2}", // URL with parameters
new { controller = "Website", action = "Home", garb1 = UrlParameter.Optional, garb2 = UrlParameter.Optional } // Parameter defaults
);
Ich habe meiner web.config-Datei die folgenden Dinge hinzugefügt ...
<configuration>
<system.web>
<pages validateRequest="false" />
<httpRuntime requestValidationMode="2.0" />
</system.web>
<configuration>
Ich habe auch das ValidateInput-Attribut zu der Aktion hinzugefügt, die die URLs abfangen soll ...
public class WebsiteController : Controller
{
[ValidateInput(false)]
public ActionResult Home()
{
return View();
}
}
Aber ich bekomme immer noch den Fehler. Irgendwelche Ideen warum? Habe ich etwas verpasst? Im Moment laufe ich nur auf meinem lokalen Entwicklungsserver (ich habe diese Korrekturen in der Produktion noch nicht ausprobiert).
quelle
Antworten:
Während Sie diese Einstellungen in der Konfigurationsdatei versuchen könnten
Ich würde es vermeiden, Zeichen wie '&' im URL-Pfad zu verwenden und sie durch Unterstriche zu ersetzen.
quelle
Ich habe mich dieser Art von Fehler gestellt. eine Funktion vom Rasiermesser aufrufen.
Lösen Sie das, indem Sie die Zeile ändern
von
zu
wo meine route.config ist
quelle
Wenn Sie HTML-Tags nur für wenige Textfelder in MVC zulassen möchten
Sie können eine Sache tun
in der Steuerung
quelle
Wir haben denselben Fehler in Fiddler erhalten, als wir versucht haben herauszufinden, warum unser Silverlight ArcGIS-Karten-Viewer die Karte nicht geladen hat. In unserem Fall war es ein Tippfehler in der URL im Code. Aus irgendeinem Grund gab es dort ein Gleichheitszeichen.
http: = // someurltosome / awesome / place
anstelle von
http: // someurltosome / awesome / place
Nachdem ich das Gleichheitszeichen herausgenommen hatte, funktionierte es (natürlich) großartig.
quelle
Überprüfen Sie, ob die folgenden Zeilen in Ihrer Datei web.config vorhanden sind
<system.web> <httpRuntime requestPathInvalidCharacters="" /> </system.web>
quelle