2010-09-15 8 views
17

Mon global.asax ne semble pas déclencher. J'ai:global.asax Application_Error ne déclenche pas

void Application_Error(object sender, EventArgs e) 
{ 
    // Code that runs when an unhandled error occurs 
    Server.Transfer("~/ExceptionFormView.aspx"); 
} 

Dans mon web.config, je n'ai rien comme CustomErrors. Comme je veux que tout soit géré par Global.asax et transféré à ExceptionFormView.aspx.

Cela fonctionne très bien localement, mais pas lorsque nous déployons sur des serveurs. Des pensées?

Ai-je besoin de PrecompiledApp.config?

Répondre

19

Si vous ne disposez pas d'une section customErrors dans votre web.config, il est le même que celui ayant la section avec mode="RemoteOnly". Ce mode customError rendra les requêtes locales (effectuées à partir du serveur exécutant IIS) sans utiliser d'erreurs personnalisées et exécutera la méthode Application_Error() comme prévu. Les requêtes distantes utiliseront customErrors et n'exécuteront pas la méthode mentionnée ci-dessus. Cela explique pourquoi vous constatez un comportement différent localement sur votre serveur. Vous pouvez reproduire ce comportement sur n'importe quel environnement en modifiant explicitement le mode customErrors sur On ou Off. On n'exécutera pas la section Application_Error() alors que Off le fera. Cela ne résout pas votre problème bien sûr, ce qui veut dire que vous voulez que la méthode soit exécutée malgré tout. J'ai une prime sur another question où nous essayons de comprendre pourquoi la méthode Application_Error() ne se déclenche pas lorsque le mode customErrors est activé. Revenez là-bas dans quelques jours pour voir si nous avons trouvé une solution.

4

Si vous utilisez IIS 7, essayez de définir:

Response.TrySkipIisCustomErrors = true; 
+0

Référence: https://github.com/13daysaweek/Mvc4CustomErrorPage et http://blog.janjonas.net/2011-04-13/asp_net-prevent-iis_75_overriding-custom-error-page-iis-default- error-page – lahphim

+0

Parfait, merci :) – mt025

3

Si vous avez déployé votre application précédemment comme précompilés, mais maintenant vous n'êtes pas, alors oui, vous devez supprimer PreCompiledApp.config et votre Deployment.dll dans le répertoire bin. .NET utilisera le code global dans Deployment.dll au lieu de vos modifications.

+0

Cela a fonctionné pour moi! Je tourne en rond depuis 6 heures, juste pour noter que c'était dû à une précompilation! –

+0

Mon problème est le contraire. Auparavant, mon application était non précompilée, mais maintenant elle est pré-compilée. J'ai vérifié que PrecompiledApp.config est dans mon répertoire racine de mon site Web, mais mon Application_Start() ne se déclenche toujours pas. –