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);
            }
        }

我可以做更多的事情来捕获涉及数据库、安全性(如无法连接到 ldap)、数据问题/转换等的错误吗?

4

1 回答 1

1

第二个代码片段可以添加到全局操作过滤器(在 中注册global.asax)。第一个片段可以添加到单独的IHttpModule实现中以将其从 global.asax 中删除。

除此之外,您已将代码添加到将捕获所有异常的两个地方。第一个将针对所有非 MVC 相关异常调用,而后一个仅针对 MVC 异常(不包括路由)

于 2013-03-11T15:31:26.433 回答