Как вернуть более конкретный HTTP-код (например, 401.X)
Здесь приведена статья о некоторых расширенных HTTP-кодах:
IIS 7.0, IIS 7.5 и IIS 8.0 определяют несколько кодов состояния HTTP, которые указывают на более конкретную причину ошибки 401. Следующие конкретные Коды состояния HTTP отображаются в браузере клиента, но не отображается в журнале IIS:
- 401.1 - Ошибка входа в систему.
- 401.2 - Ошибка входа в систему из-за конфигурации сервера.
- 401.3 - Несанкционированное из-за ACL на ресурсе.
- 401.4 - Ошибка авторизации с помощью фильтра.
- 401.5 - Ошибка авторизации с помощью приложения ISAPI/CGI.
Мне нужны некоторые пользовательские расширенные HTTP-коды, подобные этим:
- 401.10 - Пользователь не найден
- 401.11 - Несоответствие пароля пользователя
- 401.12 - Учетная запись пользователя заблокирована.
- 401.13 - Учетная запись пользователя истекло
- ...
Как вернуть эти расширенные коды ошибок 401 из приложения .NET MVC?
Ответы
Ответ 1
В вашем методе действий вы устанавливаете коды состояния вручную:
Response.StatusCode = 401;
Response.SubStatusCode = 10;
Кроме того, вы можете использовать перечисление HttpStatusCode в System.Net:
Response.StatusCode = (int)HttpStatusCode.Unauthorized;
Ответ 2
Как вернуть эти расширенные коды ошибок 401 из приложения .NET MVC?
Вы не можете вернуть их из своего приложения в том смысле, что пользователь получит их, так как HTTP не поддерживает коды подстановки.
Они используются только для ведения журнала и трассировки IIS, возвращается только "основной" код состояния.
Ответ 3
Используйте Response.StatusCode
и Response.SubStatusCode