Как программно сгенерировать ошибку 401 на странице ASP.NET
-
03-07-2019 - |
Вопрос
Как вы видите, это вопрос не веб-разработчика. Я хотел бы иметь страницу ASPX, которая при определенных обстоятельствах может генерировать ошибку 401 из кода. В идеале это будет показывать стандартную страницу IIS.
Решение
Установите Response.StatusCode , а затем - если вам нужно остановить выполнение - позвоните в Response.End ( ) . р>
Другие советы
Response.StatusCode = 401;
Response.End();
Я думаю, что я все еще предпочитаю:
throw new HttpException(401, "Auth Failed")
Я не думаю, что метод Response.StatusCode
вызывает пользовательские ошибки, определенные в файле web.config, например, Р>
<customErrors mode="On" defaultRedirect="GenericErrorPage.htm">
<error statusCode="401" redirect="AuthFailed.htm" />
<error statusCode="403" redirect="NoAccess.htm" />
<error statusCode="404" redirect="FileNotFound.htm" />
</customErrors>
Создание нового исключения определенно вызывает пользовательские ошибки.
Кроме того, вы можете использовать функцию регистрации ошибок в масштабах всего приложения, например ELMAH или что-то, и я не думаю, что метод Response.StatusCode
также будет там записываться.
Примечание. Теперь я вижу, что в вопросе говорится, что в идеале должна отображаться стандартная страница ошибок IIS. Очевидно, что пользовательские страницы ошибок не нужны . В этом случае я бы использовал метод Response.StatusCode
.
Вы должны иметь возможность просто использовать следующее, согласно
Еще один комментарий. Если часть страницы уже была записана в выходной буфер, важно удалить все буферизованное содержимое, иначе страница может отображаться неправильно. Это вполне вероятно в шаблонной среде. например Главные страницы ... Response.ClearContent();
Response.StatusCode = 401;
Response.End();