0

mvcアプリケーションで例外をキャッチするために、グローバルファイルに次のコードを配置しました。

 void Application_Error(Object sender, EventArgs e)
        {
            Exception ex = Server.GetLastError().GetBaseException();
            log.Error("Exception", ex);
        }

そして、どのコントローラーが呼ばれるかを追跡するために以下を実行します。

public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            if (log.IsDebugEnabled)
            {
                var loggingWatch = Stopwatch.StartNew();
                filterContext.HttpContext.Items.Add(StopwatchKey, loggingWatch);

                var message = new StringBuilder();
                message.Append(string.Format("Executing controller: {0}, action: {1}",
                    filterContext.ActionDescriptor.ControllerDescriptor.ControllerName,
                    filterContext.ActionDescriptor.ActionName));

                log.Debug(message);
            }
        }

db、セキュリティ(ldapに接続できないなど)、データの問題/キャストなどに関連するエラーをキャッチするためにできることは他にもありますか?

4

1 に答える 1

1

2番目のコードスニペットは、グローバルアクションフィルター(に登録)に追加できますglobal.asax。最初のスニペットを別のIHttpModule実装に追加して、global.asaxから削除することができます。

それ以外は、すべての例外がキャッチされる2つの場所にコードを追加しました。最初の1つは、MVCに関連しないすべての例外に対して呼び出され、後者はMVC例外のみに対して呼び出されます(ルーティングは除外されます)。

于 2013-03-11T15:31:26.433 に答える