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

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

5 ответов


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


Response.StatusCode = 401;
Response.End();

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

throw new HttpException(401, "Auth Failed")

Я не думаю, что Response.StatusCode метод запускает пользовательские ошибки, определенные в интернете.файл 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 метод в этом случае.


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

Throw New HttpException(401, "Auth Failed")

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


дополнительные замечания.

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

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

Response.ClearContent();
Response.StatusCode = 401;
Response.End();