Redirigir a la página 404 mediante programación usando asp.net MVC

He creado una aplicación MVC de Asp.net. Ahora requiere manejo 404.

Ha actualizado global.asax y muestra la página 404 según el código de estado. También se agregó la propiedad customErrors en web.config. Está funcionando bien.

Ahora me gustaría redirigir a 404 mediante programación cuando algo no coincida con nuestro requisito.

es decir,

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

Funciona bien, pero hay 2 estados, uno es 301 y luego 404. Entonces, ¿cómo puedo evitar el 301? Solo necesito 404.

¿Cómo puedo conseguir esto?

preguntado el 22 de mayo de 12 a las 14:05

3 Respuestas

Simplemente regrese de su acción:

return HttpNotFound();

contestado el 23 de mayo de 12 a las 05:05

Esta es la respuesta correcta. En el caso de que consulte la base de datos mientras obtiene un resultado y encuentre un objeto con la ID especificada por el usuario que no existe, DEBE redirigir mediante programación al usuario a una página 404 (o una acción similar). - Dermot

En su web.config, agregue:

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

Esto redirigirá a la página 404.shtml cuando no se encuentre el recurso solicitado.

Nota: No es necesario redirigir mediante programación a los usuarios para tal situación.


EDIT: Literalmente sugiero:

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

contestado el 22 de mayo de 12 a las 14:05

Simplemente arroja un 404 en el código de estado:

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

contestado el 22 de mayo de 12 a las 14:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.