Со значением validaterequest="false" - в не работает в Asp.Net 4



У меня есть форма, в которой я использую ckeditor. Эта форма отлично работала Asp.Net 2.0 и 3.5 но теперь это не работает Asp.Net 4+. У меня есть validaterequest="false" директива. Есть предложения?

504   5  

5 ответов:

найдено решение на странице ошибки. Просто нужно добавить requestValidationMode="2.0"

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

информация MSDN:HttpRuntimeSection.RequestValidationMode Собственность

есть способ вернуть проверку на 2.0 для одной страницы. Просто добавьте код ниже в свой веб-сайт.config:

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

    ...
    the rest of your configuration
    ...

</configuration>

Я знаю, это старый вопрос, но если вы столкнулись с этой проблемой в MVC 3, то вы можете украсить свой ActionMethod С [ValidateInput(false)] и просто выключите проверку запроса для одного ActionMethod, что очень удобно. И вам не нужно вносить какие-либо изменения к web.config файл, так что вы все еще можете использовать проверку запросов .NET 4 везде.

например

[ValidateInput(false)]
public ActionMethod Edit(int id, string value)
{
    // Do your own checking of value since it could contain XSS stuff!
    return View();
}

это работает без изменения режима проверки.

вы должны использовать System.Web.Helpers.Validation.Unvalidated помощник от System.Web.WebPages.dll. Он собирается вернуть a UnvalidatedRequestValues объект, который позволяет получить доступ к форме и строке без проверки.

например,

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

работает для меня для MVC3 и .NET 4.

обратите внимание, что другой подход заключается в том, чтобы сохранить поведение проверки 4.0, но определить свой собственный класс, производный от RequestValidator и

<httpRuntime requestValidationType="YourNamespace.YourValidator" />

(где YourNamespace.YourValidator хорошо, вы должны быть в состоянии догадаться...)

таким образом, вы сохраняете преимущества поведения 4.0 s (в частности, что проверка происходит раньше при обработке), а также разрешаете запросы, которые вам нужно пропустить, через.

Comments

    Ничего не найдено.