2012-07-05 17 views
8

que tiene un simple ASP.NET MVC 3 sitio web alojado en IIS 7.0 y estoy teniendo dificultades para la visualización de una página personalizada de error HTTP para un código de estado HTTP 404.13.configuración de IIS para el error 404.13 personalizada

que tienen la siguiente configuración en mi Web.Config

<system.web> 
    <httpRuntime maxRequestLength="2048"/> 
    <customErrors mode="Off"/> 
</system.web> 

<system.webServer> 
    <httpErrors errorMode="Custom" existingResponse="Replace"> 
     <clear/> 
     <error statusCode="404" subStatusCode="-1" path="/home/showerror" responseMode="ExecuteURL" /> 
     <error statusCode="404" subStatusCode="13" path="/home/showerror" responseMode="ExecuteURL" /> 
    </httpErrors> 
    <security> 
     <requestFiltering> 
      <requestLimits maxAllowedContentLength="1048576"/> 
     </requestFiltering> 
    </security> 
</system.webServer> 

Cuando navego a una página que no existe mi página de error se procesa de forma correcta. Sin embargo, si subo un archivo de más de 1 MB, se me presentará una respuesta 404 vacía. La url nunca se ejecuta. Si cambio el responseMode a Redirect, entonces el usuario se redirige correctamente.

+0

posible duplicado de [página personalizada de error de visualización cuando el archivo de carga excede el tamaño permitido en ASP.NET MVC] (http://stackoverflow.com/questions/2759193/display-custom-error-page-when-file -upload-exceeds-allowed-size-in-asp-net-mvc) –

+1

@DarinDimitrov Esa pregunta usa responseMode = Redirigir, es un problema diferente, no es un duplicado. –

+1

Utiliza la redirección porque ExecuteURL no funciona con 404.13 como se explica en la respuesta duplicada. –

Respuesta

3

El error personalizado no se muestra muy probablemente debido a la función de bloqueo del sistema de configuración. Pruebe el siguiente comando para desbloquearlo:

%windir%\System32\inetsrv\appcmd unlock config -section:system.webserver/httperrors 

Después de un par de días de jugar con RequestFilters y páginas CustomError, finalmente funcionó para mí.

1

Tuve el mismo problema con IIS 7.5 en modo integrado.

Finalmente me di por vencido tratando de controlar el error en el método web.config y se trasladó la detección de errores y tratamiento a la vez Application_EndRequest:

Añadir lo siguiente a su archivo global.asax:

Si no tiene un archivo global.asax (MVC), puede agregarlo en su lugar.

Protected Sub Application_EndRequest(ByVal sender As Object, ByVal e As System.EventArgs) 

    Dim context As HttpContext = HttpContext.Current.ApplicationInstance.Context 
    If Not IsNothing(context) Then 

     If context.Response.StatusCode = 404 And 
      context.Response.SubStatusCode = 13 Then 

       context.Response.ClearHeaders() 
       context.Server.Transfer("~/errors/404.13.aspx", False) 
     End If 

    End If 
End Sub 
+0

Esta solución no funciona para mí en MVC. Lanza la excepción "Error al ejecutar la solicitud de hijo para ...". Si trato de usar Response.Redirect, arroja "Maximum request length excedido". excepción. –

Cuestiones relacionadas