Как программно сгенерировать ошибку 401 на странице ASP.NET - PullRequest
34 голосов
/ 20 октября 2008

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

Ответы [ 5 ]

57 голосов
/ 20 октября 2008
Response.StatusCode = 401;
Response.End();
54 голосов
/ 20 октября 2008

Установить Response.StatusCode , а затем - если вам нужно остановить выполнение - вызвать Response.End () .

44 голосов
/ 27 октября 2009

Я думаю, что я все еще предпочитаю:

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.

12 голосов
/ 20 октября 2008

Вы можете использовать следующее, в соответствии с MSDN .

.
Throw New HttpException(401, "Auth Failed")

Редактировать После просмотра других ответов установка кода состояния будет более подходящей.

10 голосов
/ 06 октября 2011

Один дополнительный комментарий.

Если часть страницы уже была записана в выходной буфер, важно удалить все буферизованное содержимое, иначе страница может отображаться неправильно.

Это вполне вероятно в шаблонной среде. например Главные страницы ...

Response.ClearContent();
Response.StatusCode = 401;
Response.End();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...