Ich habe eine ASP.NET MVC-Anwendung mit einer Route, mit der über / search / <searchterm> nach Dingen gesucht werden kann.
Wenn ich "search / abc" gebe, funktioniert es gut, aber wenn ich "/ search / a + b + c" (korrekt url-codiert) gebe, lehnt IIS7 die Anforderung mit dem HTTP-Fehler 404.11 ab ( Das Anforderungsfiltermodul ist so konfiguriert, dass a verweigert wird Anfrage, die eine doppelte Escape-Sequenz enthält ). Zuallererst, warum macht es das? Es scheint den Fehler nur dann auszulösen, wenn er Teil der URL ist, aber nicht als Teil einer Abfragezeichenfolge (/ Transmit? Q = a + b + c funktioniert einwandfrei).
Jetzt könnte ich doppelte Escape-Anforderungen im Sicherheitsbereich meiner web.config aktivieren, aber ich zögere, dies zu tun, da ich die Auswirkungen nicht verstehe und auch nicht, warum der Server die Anforderung "a + b + c" als ablehnen würde Teil der URL, aber als Teil einer Abfragezeichenfolge akzeptieren.
Kann jemand erklären und Ratschläge geben, was zu tun ist?
/search/a%2520b%2520c
im Markup , das zu einem schönen Fehler "Ein potenziell gefährlicher Request.Path-Wert wurde vom Client (%) erkannt" führte. Sie können anscheinend nicht gewinnen.