Problema
cuando configuro manualmente el HTTP Status
flujo de mi respuesta en, por ejemplo, 404
o 503
, IIS muestra el contenido / vista de IIS de stock, en lugar de mi vista personalizada.
Cuando hago esto con el servidor de desarrollo web (AKA. Cassini ), funciona correctamente (es decir, mi contenido se muestra y el response.statuscode
== mis datos ingresados).
¿Hay alguna forma de anular este comportamiento?
Cómo replicar
Haga una aplicación web ASP.NET MVC1 predeterminada. Agrega la siguiente ruta
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default",
"{*catchall}",
new { controller = "Home", action = "Index" }
);
}
Ahora reemplace el método de índice de HomeController con ...
[HandleError]
public class HomeController : Controller
{
public ActionResult Index()
{
Response.StatusCode = 404;
return View();
}
}
fuente
Otra forma de evitar esto es ejecutar el siguiente código en su aplicación ASP:
Fuente: /programming//a/21271085/238753
fuente
Tenga cuidado con ese enfoque en general. NO debe representar una vista sobre el estado 404.
Creo que cuando se devuelve un código de estado de error, IIS devuelve la página de error de estado que está registrada con él, no el resultado del procesamiento. Entonces, puedes poner una página HTML allí (o un enlace a una página aspx). http://professionalaspnet.com/archive/2008/02/13/Enforcing-a-Custom-404-Page-in-ASP.NET.aspx tiene una buena explicación sobre cómo configurar una página de error.
Pero eso es irrelevante. Varios navegadores por defecto NO muestran esa salida, sino algo configurado en el navegador. Entonces, si confía en que las personas vean su página 404, eso puede no suceder. Pueden ver la página 404 que está configurada en el navegador para ellos.
fuente