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

Возможно ли выполнить ошибку 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();
}
4b9b3361

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