Значение не может быть приведено из ReadableNativeMap к удвоению

Проверка подлинности XSS включена в MVC по умолчанию. Таким образом, вам не нужно ограничивать ввод HTML (он уже ограничен), вместо этого вы разрешаете ввод HTML только для определенных свойств Actions или ViewModel, которые вы отметили.

Настройка атрибута [ValidateInput(false)] в действии будет отключить проверку на все действие.

Атрибут [AllowHtml] в свойстве ViewModel позволяет вводить только HTML-данные для этого свойства. Это рекомендуемый способ включения ввода HTML.

Чтобы решить вашу проблему, вы должны удалить [ValidateInput(false)] из своего действия.

Дальнейшее чтение: Предотвращение атак XSS в ASP.NET MVC с использованием ValidateInput и AllowHTML .

Также убедитесь, что вы настроили правильный requestValidationMode в своем web.config. requestValidationMode 4.5 vs 2.0 .


Чтобы предоставить настраиваемое сообщение об ошибке, если проверка входных данных завершилась неудачно, зарегистрируйте IExceptionFilter в Global.asax, который проверяет, выбрано ли исключение HttpRequestValidationException.

public class HttpRequestValidationExceptionFilter : FilterAttribute, IExceptionFilter {

    public const int MySpecialStatusCodeIndicatingValidationError = 1337;

    public void OnException(ExceptionContext filterContext) {
        if (!filterContext.ExceptionHandled && filterContext.Exception is HttpRequestValidationException) {
            // redirect to error controller, which shows custom message
            filterContext.Result = new HttpStatusCodeResult(MySpecialStatusCodeIndicatingValidationError);
            filterContext.ExceptionHandled = true;
        }
    }
}

Для возможного механизма обработки ошибок с помощью специальных кодов состояния см. Обработка ошибок ASP.NET MVC 404 . Идея состоит в распознавании MySpecialStatusCodeIndicatingValidationError и перенаправлении на правильное действие в пользовательском HttpErrorController.

0
задан Muj 20 January 2019 в 01:13
поделиться