Modo CustomErrors = "Apagado"

254

Recibo un error cada vez que subo mi aplicación web al proveedor. Debido al modo customErrors, todo lo que veo es el mensaje predeterminado "Error de tiempo de ejecución", que me indica que apague customErrors para ver más sobre el error.

Exasperado, configuré mi web.config para que se vea así:

<?xml version="1.0"?>
<configuration>
    <system.web>
        <customErrors mode="Off"/>
    </system.web>
</configuration>

Y aún así, todo lo que obtengo es la estúpida página de errores remotos sin información útil. ¿Qué más puedo hacer para desactivar CustomErrors?

Radu094
fuente
1
intente agregar @Model.Exception.Messagea laShared/Error.cshtml
Muflix
En general, tenga cuidado con las transformaciones de configuración (por ejemplo, Web.Debug.config que podría cambiar ese valor), y tenga cuidado con las definiciones duplicadas de esa sección / propiedad en el archivo (claramente no fue el problema en este caso)
Graham

Respuestas:

165

Esto me ha vuelto loco durante los últimos días y no pude evitarlo, pero finalmente lo descubrí:

En mi archivo machine.config tenía una entrada en <system.web>:

<deployment retail="true" />

Esto parece anular cualquier otra configuración de CustomError que haya especificado en un archivo web.config, por lo que debe configurar la entrada anterior en:

<deployment retail="false" />

ahora significa que una vez más puedo ver los mensajes de error detallados que necesito.

El machine.configse encuentra en

32 bits

%windir%\Microsoft.NET\Framework\[version]\config\machine.config

64 bits

%windir%\Microsoft.NET\Framework64\[version]\config\machine.config 

Espero que ayude a alguien y ahorre unas horas de tirones de cabello.

Blaise
fuente
Buen punto. Sin embargo, es mejor volver al modo minorista a verdadero cuando haya terminado (o desactivar el modo de depuración en web.config, lo que será una molestia en su máquina de desarrollo). Ver weblogs.asp.net/lasse/archive/2009/04/28/…
Stephen Kennedy
Esta parece ser una configuración predeterminada en .NET 4.0: tuve el mismo problema para resolverlo. Acepte que es una buena configuración para usar en un entorno de producción, pero ver el error REAL es muy importante al depurar.
Jeremy
No solo salvar mi tiempo también me salvó la vida. eso fue exactamente lo que funcionó para mí
Pouya Samie
142

"Desactivado" distingue entre mayúsculas y minúsculas.

Compruebe si la "O" está en mayúscula en su archivo web.config, lo he sufrido varias veces (por simple que parezca)

juan
fuente
49

En el interés de agregar más situaciones a esta pregunta (porque aquí es donde busqué porque tenía exactamente el mismo problema), esta es mi respuesta:

En mi caso, corté / pegué el texto del error genérico que decía en efecto si quieres ver qué pasa, pon

<system.web>
   <customErrors mode="Off"/>
</system.web>

Así que esto debería haberlo solucionado, ¡pero por supuesto que no! Mi problema era que había un nodo <system.web> varias líneas arriba (antes de un nodo de compilación y autenticación), y una etiqueta de cierre </system.web> unas pocas líneas debajo de eso. Una vez que corregí esto, OK, el problema se resolvió. Lo que debería haber hecho es copiar / pegar solo esta línea:

<customErrors mode="Off"/>

Esto es de los anales de Stupid Things que sigo haciendo una y otra vez, en el capítulo titulado "Copie y pegue su camino hacia la destrucción".

Ciberherbalista
fuente
Pregunta: Esta respuesta implica que ASP lee web.config y otros archivos de configuración desde arriba, es decir, de arriba hacia abajo. Pensé que los archivos de configuración se leían como una "instancia única", lo que significa que el compilador primero analiza el archivo de configuración para mayor precisión y luego lo compila, pero parece que lo está compilando sobre la marcha, línea por línea. ¿Es eso cierto?
Fandango68
@ Fernando68, es mejor plantearlo como una pregunta separada: una discusión en los comentarios no es exactamente óptima. No soy un ingeniero .NET, pero claramente .NET no lo está compilando línea por línea. Es un archivo Xml y, por lo tanto, es jerárquico. Pero si la jerarquía está mal formada, el analizador Xml generará una excepción al analizarlo. En otras palabras, tiene que tomar todo el archivo Xml como un todo, pero si encuentra un Xml incorrecto, ¡no puede construir el objeto requerido en absoluto!
Ciberherbalista
Ya lo he planteado como una pregunta separada stackoverflow.com/questions/30471043/… . Gracias por su respuesta, que es efectivamente las respuestas que obtuve en mi otra publicación. Saludos
Fandango68
10

Para las aplicaciones de Sharepoint 2010, también debe editar C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\web.configy definir<customErrors mode="Off" />

Rubens Farias
fuente
7

Probé la mayoría de las cosas descritas aquí. Estaba usando VWD y el archivo web.config predeterminado contenía:

    <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
        <error statusCode="403" redirect="NoAccess.htm" />
        <error statusCode="404" redirect="FileNotFound.htm" />
    </customErrors>

Cambié mode = "RemoteOnly" a mode = "Off". Aún no hay alegría. Luego utilicé el administrador IIS, las propiedades, la pestaña ASP.Net, Editar configuración, luego elegí la pestaña CustomeErrors. Esto todavía mostró RemoteOnly. Cambié esto a Off y finalmente pude ver los mensajes de error detallados.

Cuando inspeccioné web.config, vi que había dos nodos CustomErrors en system.web; y acabo de notar que la segunda entrada (la que estaba cambiando estaba dentro de un comentario). Intente no usar el bloc de notas para inspeccionar web.config en un servidor remoto.

Sin embargo, si usa el material de configuración de edición de IIS, se quejará de errores en web.config. Luego puede descartar todas las respuestas que dicen "¿hay un error de sintaxis XML en su web.config"?

Khanzor
fuente
Cambiar el web.config en el nivel del sitio web funcionó para mí. Anteriormente había jugado con la carga del archivo web.config de la aplicación, fallando. ¡Gracias!
The1nk
7

La única respuesta que realmente funcionó para solucionar esto la encontré aquí: https://stackoverflow.com/a/18938991/550975

Simplemente agregue esto a su web.config:

<configuration>  
  <system.webServer>  
    <httpErrors existingResponse="PassThrough"/>  
  </system.webServer>  
<configuration>
Serj Sagan
fuente
3
Me encontré <httpErrors errorMode="Detailed" />me dio toda la información que needed`
alastairtree
6

En general, puede encontrar más información sobre el error en el Visor de eventos, si tiene acceso a él. Es posible que su proveedor también haya evitado que se muestren errores personalizados, ya sea sobrescribiéndolo en su machine.config o configurando el atributo minorista como verdadero ( http://msdn.microsoft.com/en-us/library/ms228298 ( VS.80) .aspx ).

digitaljeebus
fuente
5

También tuve este problema, pero cuando usaba Apache y mod_mono. Para cualquier otra persona en esa situación, debe reiniciar Apache después de cambiar web.config para forzar la lectura de la nueva versión.

mikel
fuente
5

Si todavía está recibiendo esa página, es probable que esté explotando antes de pasar la Web.

Asegúrese de que ASP.Net tiene los permisos que necesita para cosas como las carpetas de .Net Framework, la Metabase de IIS, etc. ¿Tiene alguna forma de verificar que ASP.Net esté instalado correctamente y asociado en IIS correctamente?

Editar: después de que se me ocurrió el comentario de Greg, supuse que lo que publicaste era tu web.config muy mínima, ¿hay más? Si es así, ¿puedes publicar todo el web.config?

Nick Craver
fuente
Las pocas veces que me encontré con este problema, resultó ser un error en el archivo web.config, definitivamente repásalo primero con un peine de dientes finos.
Greg Hurlman
Sí, exasperado, he anulado mi web.config a esta configuración mínima. Todavía no hay alegría
Radu094
El usuario en el grupo de aplicaciones utilizado no tenía permisos de lectura en el directorio en el que se implementó mi aplicación. Todavía no puedo entender por qué no pude obtener un error para mostrar que me hizo saber que ese era el problema.
lambacck
A menudo, este error se puede encontrar solo en el registro de eventos del sistema / seguridad (hasta IIS 7), pero tener acceso al registro de eventos fácilmente en la mayoría de los casos es el problema.
Nick Craver
5

Mi problema fue que tenía esto definido en mi web.config

<httpErrors errorMode="Custom" existingResponse="Replace">
  <remove statusCode="404" />
  <remove statusCode="500" />
  <error statusCode="404" responseMode="ExecuteURL" path="/Error/NotFound" />
  <error statusCode="500" responseMode="ExecuteURL" path="/Error/Internal" />
</httpErrors>
Dongolo Jeno
fuente
2
Un reemplazo de <httpErrors errorMode="Detailed"ayuda como ejemplo
it3xl
2

En realidad, lo que descubrí al alojar mi aplicación web es que el código que desarrolló en su máquina local es de una versión superior a la que le ofrece la empresa de alojamiento. Si tiene privilegios de administrador, puede cambiar la compatibilidad con la versión de Microsoft ASP.NET en la configuración de alojamiento web

Joseph D'Souza
fuente
2

Tuvimos este problema y se debió a que el usuario de IIS no tenía acceso a la configuración de la máquina en el servidor web.

Tjaart
fuente
2

También nos encontramos con este error y en nuestro caso fue porque el usuario del grupo de aplicaciones ya no tenía permisos para el archivo web.config. La razón por la que perdió sus permisos (todo estaba bien antes) fue porque teníamos una copia de seguridad del sitio en un archivo rar y arrastré una versión de copia de seguridad de web.config desde el rar al sitio. Esto parece haber eliminado todos los permisos para el archivo web.config, excepto para mí, el usuario conectado.

Nos tomó un tiempo resolver esto porque revisé repetidamente los permisos en el nivel de carpeta, pero nunca en el nivel de archivo.

Ghlouw
fuente
2

Tuve el mismo problema pero encontré la resolución de una manera diferente.

-

Lo que hice fue abrir Configuración avanzada para el grupo de aplicaciones en el Administrador IIS .

Allí configuré Habilitar aplicaciones de 32 bits en Verdadero .

Levi Johansen
fuente
1

Intente reiniciar la aplicación (crear un app_offline.htm que eliminarlo) y si aún recibe el mismo mensaje de error, asegúrese de que solo haya declarado customErrors una vez en web.config, o algo así. Los errores en web.config pueden tener un impacto extraño en la aplicación.

Adam Vigh
fuente
1
cada vez que modifique web.config, el sitio web se reinicia, ¡no es necesario crear una app_offline.htm!
Matt Frear
Es cierto, no tengo idea de por qué sugerí app_offline para restablecer la aplicación. :)
Adam Vigh
1

¿Tienes algún personaje especial como æøå en tu web.config? Si es así, asegúrese de que la codificación esté establecida en utf-8.

Frederik Vig
fuente
1

¿Está esta aplicación web configurada debajo de otras aplicaciones en el árbol de directorios de un sitio web? Verifique cualquier archivo web.config principal para otras configuraciones, si las hay. Además, haga que su directorio esté configurado como un directorio de aplicaciones en IIS.

Greg Hurlman
fuente
1

Si está utilizando la vista previa 4 de MVC, podría estar experimentando esto porque está utilizando el atributo HandleErrorAttribute. El comportamiento cambió en 5 para que no maneje excepciones si desactiva los errores personalizados.


fuente
1

También puede intentar abrir el sitio web en un navegador en la máquina del servidor. No hago mucho desarrollo de ASP.NET, pero recuerdo que los errores personalizados tienen una configuración para mostrar solo el texto de error completo en el servidor, como medida de seguridad.

Neil Barnwell
fuente
1

Acabo de tratar un problema similar. En mi caso, la versión predeterminada del sitio asp.net era 1.1 mientras intentaba iniciar una aplicación web 2.0. El error fue bastante trivial, pero no estaba claro de inmediato por qué los errores personalizados no desaparecerían, y el tiempo de ejecución nunca escribió en el registro de eventos. La solución obvia era hacer coincidir la versión en la pestaña Asp.Net de IIS.

romano
fuente
Tuvimos el mismo problema. "connectionStrings" nodo estaba causando error bajo marco 1.1, mientras que la aplicación debería haber sido 2,0
mosheb
1

También asegúrese de editar web.config y no website.config, como estaba haciendo.

Eleanor Zimmermann
fuente
0

He tenido el mismo problema, y ​​la causa fue que IIS estaba ejecutando ASP.NET 1.1, y el sitio requería .NET 2.0.

El mensaje de error no hizo nada más que desviarme durante varias horas.

SimonHL
fuente
0

Asegúrate de agregar justo después del sistema.web

Lo puse hacia el final del nodo y no funcionó.

Nayef
fuente
0

Si está realizando una transformación de configuración, es posible que también deba eliminar la siguiente línea del archivo web.config correspondiente.

<compilation xdt:Transform="RemoveAttributes(debug)" />
Rich Hildebrand
fuente
0

Después de haber intentado todas las respuestas aquí, resultó que mi Application_Errormétodo tenía esto:

Server.ClearError();
Response.Redirect("/Home/Error");

Eliminar estas líneas y configurarlo solucionó el problema. (El cliente aún fue redirigido a la página de error con customErrors="On").

EM0
fuente
0

Tuve el mismo problema y revisé el registro de la aplicación Visor de eventos donde menciona claramente debido a qué excepción sucedió esto. En mi caso, la excepción fue la siguiente ...

Información de excepción:

Exception type: HttpException 
Exception message: The target principal name is incorrect.  Cannot generate SSPI context.
at System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context, HttpApplication app)
at System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers)
at System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context)
at System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context)
at System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext)

The target principal name is incorrect.  Cannot generate SSPI context.

Acabo de actualizar mi contraseña en el grupo de aplicaciones y funciona para mí.

Niraj Trivedi
fuente
0

También es posible en algunos casos que web.config no esté formateado correctamente. En ese caso, debe revisarlo línea por línea antes de que funcione. A menudo, las reglas de reescritura son las culpables aquí.

chriskuffner
fuente
0

Eso es realmente extraño Recibí este error y después de reiniciar mi servidor desapareció.

Ustin
fuente
0

Para mí fue un error más arriba en la web.config sobre el system.web.

el archivo bla no existía, por lo que arrojaba un error en ese momento. Debido a que aún no había llegado a la sección System.Web, todavía estaba usando la configuración predeterminada del servidor para CUstomErrors (Activado)

Andrew Wisener
fuente
(No parece Este post para proporcionar una respuesta de calidad a la pregunta Por favor, modifique su respuesta y mejorarlo, o simplemente publicar como un comentario a la pregunta..)
sɐunıɔ ןɐ qɐp