ValidateRequest= "false" nie działa w Asp.Net 4

Mam formularz, w którym używam ckeditor. Ta forma sprawdziła się dobrze w Asp.Net 2.0 i 3.5 ale teraz nie działa w Asp.Net 4+. Mam dyrektywę ValidateRequest= "false". Jakieś sugestie?

Author: HasanG, 2010-04-20

5 answers

Znaleziono rozwiązanie na samej stronie błędu. Wystarczy dodać requestValidationMode= " 2.0 " W web.config

<system.web>
    <compilation debug="true" targetFramework="4.0" />
    <httpRuntime requestValidationMode="2.0" />
</system.web>

Informacja MSDN: HttpRuntimeSection.Właściwość RequestValidationMode

 196
Author: HasanG,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-09-13 15:41:06

Istnieje sposób na przywrócenie walidacji do wersji 2.0 dla jednej strony. Wystarczy dodać poniższy kod do swojej sieci.config:

<configuration>
    <location path="XX/YY">
        <system.web>
            <httpRuntime requestValidationMode="2.0" />
        </system.web>
    </location>

    ...
    the rest of your configuration
    ...

</configuration>
 103
Author: Ben Hoffman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-27 08:44:58

Wiem, że to stare pytanie, ale jeśli napotkasz ten problem w MVC 3, możesz udekorować ActionMethod za pomocą [ValidateInput(false)] i po prostu wyłączyć walidację żądania dla pojedynczego ActionMethod, co jest przydatne. Nie musisz wprowadzać żadnych zmian w pliku web.config, więc nadal możesz używać walidacji żądania. NET 4 wszędzie indziej.

Np.

[ValidateInput(false)]
public ActionMethod Edit(int id, string value)
{
    // Do your own checking of value since it could contain XSS stuff!
    return View();
}
 57
Author: Tom Chantler,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-06-13 16:24:19

Działa to bez zmiany trybu walidacji.

Musisz użyć System.Web.Helpers.Validation.Unvalidated helpera z System.Web.WebPages.dll. Zwróci obiekt UnvalidatedRequestValues, który umożliwia dostęp do formularza i zapytania bez walidacji.

Na przykład,

var queryValue = Server.UrlDecode(Request.Unvalidated("MyQueryKey"));

Działa dla MVC3 i. Net 4.

 28
Author: Assassin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-03 15:00:50

Zauważ, że innym podejściem jest zachowanie walidacji 4.0, ale zdefiniowanie własnej klasy, która wywodzi się z RequestValidator I set:

<httpRuntime requestValidationType="YourNamespace.YourValidator" />

(Gdzie YourNamespace.YourValidator jest dobrze, powinieneś być w stanie zgadnąć...)

W ten sposób zachowujesz zalety zachowania 4.0 s (W szczególności, że Walidacja odbywa się wcześniej w przetwarzaniu), jednocześnie zezwalając na żądania, które musisz przepuścić, przepuścić.

 15
Author: Jon Hanna,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-03 14:52:20