Возможно ли выполнить ошибку 404 на странице ASP.Net?

Мне было интересно, возможно ли сбросить ошибку 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();
}

Ответы

Ответ 1

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

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

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

Ответ 2

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

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

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