Возможно ли выкинуть ошибку 404 на странице ASP.Net? - PullRequest
21 голосов
/ 12 февраля 2011

Мне было интересно, возможно ли выдать ошибку 404 изнутри страницы (код сзади)? Или, возможно, даже выдать страницу ошибки другого типа, такую ​​как 408 (тайм-аут) или 401 (требуется аутентификация)?

Примечание: я не просто хочу, чтобы страница возвращала код состояния 404, я хочу, чтобы она использовала страницу ошибки ASP.Net (или мои CustomErrors) 404.

Что-то вроде этого в коде позади:

if(id>10){ //if id is greater than 10, then it doesn't exist here
  throw 404Error();
}

Ответы [ 2 ]

33 голосов
/ 12 февраля 2011

Вы можете выдать HttpException и установить соответствующий код состояния:

throw new HttpException(404, "Not found");

Он также будет работать с другими кодами состояния. Просто замечание о 401: как вы, вероятно, знаете, когда ASP.NET MVC обнаруживает этот код, он автоматически перенаправляет вас на страницу входа в систему, и получение настраиваемой страницы ошибок для кода состояния 401 может быть реальной реализацией PITA.

19 голосов
/ 04 мая 2014

Гораздо лучший способ:

'Throws a 404 Not found:
Response.Clear()
Response.StatusCode = 404
Response.End()

Нет необходимости генерировать исключение, и вышеописанное работает намного лучше при использовании пользовательских страниц ошибок в web.config

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...