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

11

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

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

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

то есть

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

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

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

Ваш Ответ

3   ответа
41

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

return HttpNotFound();
Это правильный ответ. В случае, когда вы запрашиваете базу данных во время обслуживания результата и обнаруживаете, что объект с указанным пользователем идентификатором не существует, вам НЕОБХОДИМО программно перенаправить пользователя на страницу 404 (или аналогичное действие).
3

web.config, добавлять:

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

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

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

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

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

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

Похожие вопросы