Перенаправить на страницу 404 программно, используя asp.net MVC

Я создал приложение Asp.net MVC. Сейчас требуется 404 обработки.

Обновили global.asax и отобразили страницу 404 на основе кода состояния. Также добавлено свойство customErrors в web.config. Работает нормально.

Теперь я хотел бы перенаправить на 404 программно, когда любая вещь не соответствует нашему требованию.

т.е.

if(!valid) 
{
    return RedirectToAction("Index", "Page404");
}

Он работает нормально, но есть 2 статуса, один 301, а затем 404. Так как я могу предотвратить 301? Мне просто нужно 404.

Как мне этого добиться?

Ответ 1

В web.config добавить:

<customErrors mode="On" >
       <error statusCode="404" redirect="/404.shtml" />
</customErrors>

Это будет перенаправлено на страницу 404.shtml, если запрашиваемый ресурс не найден.

Примечание. Нет необходимости программно перенаправлять пользователей для такой ситуации.


EDIT: Я буквально предлагаю:

if (Context.Response.StatusCode == 404) {
  // handle this
}

Ответ 2

Просто вернитесь из своего действия:

return HttpNotFound();

Ответ 3

Просто выбросьте 404 в код состояния:

Response.StatusCode = (int)System.Net.HttpStatusCode.NotFound