Wenn Sie die Anforderung durch zulassen möchten verwendet, Sie requestPathInvalidCharacters
und legen Sie es hinzufügen müssen auf eine leere Zeichenfolge:
<system.web>
<httpRuntime requestPathInvalidCharacters="" />
</system.web>
bearbeiten Sie sollten Ihre ursprüngliche Frage an Ort und Stelle lassen, denn jetzt meine Antwort ist nicht sinnvoll.
Aber in Antwort auf Ihre zweite Frage, dass es, weil% 3f "?" was in Dateinamen unter Windows nicht erlaubt ist. Sie können die relaxedUrlToFileSystemMapping
Eigenschaft auf true
gesetzt, dieses Verhalten zu ändern:
<system.web>
<httpRuntime requestPathInvalidCharacters=""
relaxedUrlToFileSystemMapping="true" />
</system.web>
Sie könnten durch alle Eigenschaften in der HttpRuntimeSection Klasse aussehen wollen, um zu sehen, ob es irgendwelche anderen ist, die zutreffen könnten.
Sie können auch eine Unterklasse von RequestValidator implementieren und richten Sie Ihre web.config für die Verwendung Ihrer Unterklasse ein (die vermutlich alle URLs durchlässt?). Persönlich würde ich nicht stören und lassen Sie einfach die eingebauten Klassen damit umgehen. Es ist unwahrscheinlich, dass ein normaler Benutzer alle zu versehentlich in "% 3f" in einem Pfad eingibt, und warum die Mühe so gehen, um den Anwendungsfall für böswillige Benutzer zu verbessern?
Dies ist übrigens ein neues Feature in ASP.NET 4, weshalb Stack Overflow keinen Fehler ausspuckt: es läuft auf .NET 3.5.
Das löste das Problem. aber ich bekomme einen weiteren Fehler für eine andere URL. Ich werde die Frage bearbeiten. – stacker
1. Schreiben Sie den Pfad neu. 2. eine leere Seite (oder benutzerdefinierte Fehlerseite) zurückgeben. 3. Umleitung zur Startseite. Ich möchte die Möglichkeit haben zu entscheiden, wie ich auf diese Art von Fehlern reagieren soll. – stacker
Kann ich Integrationstests dafür haben? http://stackoverflow.com/questions/2831075/integrationtests-a-potentially-dangerous-request-path-value-was-detected-from-t – stacker