Изменить ASP. NET MVC запрос подтверждения ответа - PullRequest
1 голос
/ 21 февраля 2020

Мне нравится ASP. NET MVC 5 функция проверки запросов. Я хочу держать это вокруг. Однако это всегда приводит к тому, что ответы внутренней ошибки (500) возвращаются клиенту. Это не совсем верно; настоящая проблема в том, что это плохой запрос! Я хочу вернуть код состояния Bad Request (400) и потенциально более привлекательную страницу ошибки.

Несмотря на то, что я нашел много полезной информации об отключении проверки запроса или реализации собственной настраиваемой логики проверки c, во всех моих поисках мне еще не удалось найти способ настроить ответ после неудачной проверки.

Как мне это сделать? Возможно ли это?

РЕДАКТИРОВАТЬ: я не говорю о модель проверки, я говорю о запрос проверки .

1 Ответ

0 голосов
/ 26 февраля 2020

Мне кажется, ASP. NET действительно возвращает код ошибки Bad Request (400), если он внутренне встречает какие-либо подозрительные символы в запросе. Например, когда ASP. NET пытается выбрать контроллер / действие на основе пути запроса, он вернет код ошибки 400, если путь содержит подозрительные символы.

Так что, когда ни один из моего кода даже выполнено, ASP. NET обрабатывает его правильно.

Код ошибки внутреннего сервера (500) возникает только тогда, когда мой код встречает подозрительные символы. Например, когда я пишу ...

var queryStringKeys = Request.QueryString.AllKeys.ToArray();

... свойство QueryString там выдает HttpRequestValidationException, если строка запроса содержит подозрительные символы. Если оставить это исключение необработанным, ASP. NET вернет ошибку 500 (как и любое другое необработанное исключение).

Таким образом, правильный способ справиться с этим - использовать оператор try / catch, а в перехватить блок, вернуть ответ на Bad Request самостоятельно. Я полагаю, вы также можете установить какой-то фильтр, который также обрабатывает HttpRequestValidationException для вас в глобальном масштабе.

...