asp.net - que - global.asax Application_Error no se dispara
global_asax (4)
Mi global.asax parece no estar disparando. Yo tengo:
void Application_Error(object sender, EventArgs e)
{
// Code that runs when an unhandled error occurs
Server.Transfer("~/ExceptionFormView.aspx");
}
En mi web.config, no tengo nada como CustomErrors. Como quiero que todo sea manejado por Global.asax y transferido a ExceptionFormView.aspx.
Funciona bien localmente, pero no cuando lo implementamos en servidores. ¿Alguna idea?
¿Necesito PrecompiledApp.config?
En IIS7, el grupo de aplicaciones está integrado. Debe ser clásico: http://praveenbattula.blogspot.com/2009/12/iis-7-managed-pipeline-mode-globalasax.html
Si anteriormente implementó su aplicación como precompilada pero ahora no lo está, entonces sí, debe eliminar PrecompiledApp.config y su Deployment.dll en el directorio bin. .NET utilizará el código global en Deployment.dll en lugar de sus cambios.
Si está utilizando IIS 7, intente configurar:
Response.TrySkipIisCustomErrors = true;
Si no tiene una sección customErrors
en su Web.config, es lo mismo que tener la sección con mode="RemoteOnly"
. Este modo customError hará que las solicitudes locales (realizadas desde el servidor que ejecuta IIS) no utilicen errores personalizados y ejecutará el método Application_Error()
como se esperaba. Las solicitudes remotas utilizarán customErrors y no ejecutarán el método mencionado anteriormente.
Esto explica por qué está viendo un comportamiento diferente localmente que en su servidor. Puede reproducir este comportamiento en cualquier entorno cambiando el modo customErrors a On u Off explícitamente. On no ejecutará la sección Application_Error()
mientras que Off lo hará.
<customErrors mode="On|Off|RemoteOnly" />
Esto no resuelve su problema, por supuesto, y usted quiere que el método se ejecute independientemente. Tengo una recompensa por otra pregunta en la que estamos tratando de averiguar por qué el método Application_Error()
no se está activando cuando el modo customErrors está activado. Vuelve allí en un par de días para ver si hemos encontrado una solución.