Как вы можете видеть, это вопрос от не веб-разработчика. Я хотел бы иметь страницу ASPX, которая при определенных обстоятельствах может генерировать ошибку 401 из кода. В идеале это отобразило бы стандартную страницу IIS.
Как сгенерировать ошибку 401 программно на странице ASP.NET
Ответ 1
Установите Response.StatusCode, а затем - если вам нужно остановить выполнение - вызовите Response.End().
Ответ 2
Response.StatusCode = 401;
Response.End();
Ответ 3
Думаю, я все же предпочитаю:
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
.
Ответ 4
Вы должны иметь возможность использовать следующее, в соответствии с MSDN.
Throw New HttpException(401, "Auth Failed")
Изменить. После просмотра других параметров ответа код статуса будет более уместным.
Ответ 5
Один дополнительный комментарий.
Если часть страницы уже была записана в выходной буфер, тогда важно очистить любой буферный контент, или страница может отображаться неправильно.
Это довольно вероятно в шаблонной среде. например Мастер-страницы...
Response.ClearContent();
Response.StatusCode = 401;
Response.End();