3

私はASP.NET MVCアプリケーションを作成しています。私は2つの場所で例外を処理する必要があります。ASP.NET MVCエラー(Global.asaxとError.aspxの両方)

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 

ビュー\共有\ Error.aspxファイルは:どこがすべき

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

<%@ 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> 
... 

しかし、私はこのエラーを取得しますGlobal.asax.vbファイルとError.aspxファイルの両方からアクセスできるように、私のLogException()関数を定義しますか? MVC-ishはどこですか?

+1

これらの回答は正しいですか?それとも、他のものよりも正しいのですか?もしそうなら、それをマークできますか? – SideFX

答えて

2

ほとんどのMVC-ish方法はActionFiltersを使用して(ログ)例外を処理することです。

は、例えば、これをチェックしてください:

Logging with ASP.NET MVC Action Filters

+1

私の+1ですが、Application_Startでエラーが発生した場合はどうなりますか?私たちはAutofacとNHibernateのログを_startに設定しています。何かがうまくいかずエラーがスローされた場合、ActionFilterはそのエラーを捕まえません。慎重に! – Perhentian

+1

この例では、例外を記録するのではなく、 – codeulike

6

あなたはELMAHと呼ばれるモジュールを試してみたいことがあります。 Scott Hanselmanは、「ELMAHはASP.NETエラーのTivoです」と述べています。私は現在、ASP .NET + MVCアプリケーションでエラーを記録するためにこれを使用していますが、魅力的に機能します。セットアップが簡単だったのは、web.configにラインを追加するだけだったからです。エラーログを表示するアクセス権を持つユーザーを制限することもできます。私はあなただけのディレクティブが欠落している集めることができるもののために実際に

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

1

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

そして、それは宣伝通りに動作しwhould。

関連する問題