Подтвердить что ты не робот

Как сгенерировать ошибку 401 программно на странице ASP.NET

Как вы можете видеть, это вопрос от не веб-разработчика. Я хотел бы иметь страницу ASPX, которая при определенных обстоятельствах может генерировать ошибку 401 из кода. В идеале это отобразило бы стандартную страницу IIS.

4b9b3361

Ответ 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();