Mam problem ze starszym kodem, który wymaga obsługi losowych adresów URL, tak jakby były one żądaniami strony głównej. Niektóre adresy URL zawierają znaki, które generują błąd „Wykryto potencjalnie niebezpieczną wartość Request.Path na kliencie (&)” . Witryna jest napisana w programie ASP.Net MVC 3 (w języku C #) i działa w usługach IIS 7.5.
Oto przykładowy adres URL ...
http://mywebsite.com/Test123/This_&_That
Oto jak mam konfigurację trasy typu catch-all (mam inne trasy do przechwytywania określonych stron) ...
routes.MapRoute(
"Default", // Route name
"{garb1}/{garb2}", // URL with parameters
new { controller = "Website", action = "Home", garb1 = UrlParameter.Optional, garb2 = UrlParameter.Optional } // Parameter defaults
);
Dodałem następujące rzeczy do mojego pliku web.config ...
<configuration>
<system.web>
<pages validateRequest="false" />
<httpRuntime requestValidationMode="2.0" />
</system.web>
<configuration>
Dodałem również atrybut ValidateInput do akcji, która powinna przechwytywać adresy URL ...
public class WebsiteController : Controller
{
[ValidateInput(false)]
public ActionResult Home()
{
return View();
}
}
Ale nadal otrzymuję błąd. Jakieś pomysły, dlaczego? Przegapiłem coś? W tej chwili pracuję tylko na moim lokalnym serwerze deweloperskim (nie próbowałem jeszcze tych poprawek w środowisku produkcyjnym).
źródło
Odpowiedzi:
Chociaż możesz wypróbować te ustawienia w pliku konfiguracyjnym
Unikałbym używania znaków takich jak „&” w ścieżce adresu URL, zastępując je podkreśleniami.
źródło
Spotkałem się z tego typu błędem. wywołać funkcję z brzytwy.
rozwiąż ten problem, zmieniając linię
z
do
gdzie jest mój route.config
źródło
Jeśli chcesz zezwolić na tagi HTML tylko dla kilku pól tekstowych w mvc
Możesz zrobić jedną rzecz
w kontrolerze
źródło
Ten sam błąd występował w aplikacji Fiddler podczas próby ustalenia, dlaczego nasza przeglądarka map Silverlight ArcGIS nie ładowała mapy. W naszym przypadku była to literówka w adresie URL w kodzie. Z jakiegoś powodu był tam znak równości.
http: = // someurltosome / awesome / place
zamiast
http: // someurltosome / awesome / place
Po usunięciu tego znaku równości działało świetnie (oczywiście).
źródło
Sprawdź, czy poniższe linie znajdują się w Twoim pliku web.config
<system.web> <httpRuntime requestPathInvalidCharacters="" /> </system.web>
źródło