3

Je crée une application ASP.NET MVC. J'ai besoin de gérer les exceptions à deux endroits.Erreur ASP.NET MVC Connexion à la fois Global.asax et Error.aspx

fichier Global.asax.vb:

Public Class MvcApplication 
    Inherits System.Web.HttpApplication 
    ... 
    Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs) 
     LogException(HttpContext.Current.Server.GetLastError(), Request) 
    End Sub 
    Shared Sub LogException(ByVal ex As Exception, ByRef r As System.Web.HttpRequest) 
     ... 
    End Sub 
End Class 

Views \ fichier Shared \ Error.aspx:

<%@ Page Language="VB" Inherits="System.Web.Mvc.ViewPage(Of System.Web.Mvc.HandleErrorInfo)" %> 
<script runat="server"> 
    Sub Page_Load(ByVal Sender As System.Object, ByVal e As System.EventArgs) 
     MvcApplication.LogException(Model.Exception, Request) 
    End Sub 
</script> 
... 

mais je reçois cette erreur:

C:\inetpub\example.com\Views\Shared\Error.aspx(5): error BC30451: Name 'MvcApplication' is not declared.

Où dois-je définir ma fonction LogException() pour qu'il soit accessible à partir du fichier Global.asax.vb et du fichier Error.aspx? Où est le plus MVC-ish?

+1

Certaines de ces réponses sont-elles correctes? Ou est-il plus correct que l'autre? Si oui, pouvez-vous le marquer? – SideFX

Répondre

2

La manière la plus MVC-ish serait d'utiliser ActionFilters pour gérer les exceptions (log).

Vérifiez ce par exemple:

Logging with ASP.NET MVC Action Filters

+1

+1 de moi, cependant, que se passe-t-il si une erreur se produit dans votre Application_Start? Nous avons tout un journal de Autofac et NHibernate mis en place dans _start et si quelque chose se passe mal et renvoie une erreur, un ActionFilter n'attrapera jamais cette erreur. Prudent! – Perhentian

+1

Cet exemple semble concerner les actions de journalisation plutôt que les exceptions de journalisation – codeulike

6

Vous pouvez essayer un module appelé ELMAH. Scott Hanselman dit "ELMAH est Tivo pour vos erreurs ASP.NET". Je l'utilise actuellement pour les erreurs de connexion dans mes applications ASP .NET + MVC et cela fonctionne comme un charme. L'installation a été facile car tout ce qui est nécessaire est d'ajouter des lignes au web.config. Vous pouvez même restreindre l'accès aux journaux d'erreurs.

http://www.hanselman.com/blog/ELMAHErrorLoggingModulesAndHandlersForASPNETAndMVCToo.aspx

1

En fait, pour ce que je pourrais vous rassemblerai vous manque seulement une directive:

<%@ Import Namespace="[Your default namespace]" %> 

Et whould fonctionner comme prévu.

Questions connexes