我将以下代码放在全局文件中以捕获我的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),数据问题/转换等的错误。?
答案 0 :(得分:1)
可以将第二个代码段添加到全局操作过滤器(在global.asax
中注册)。可以将第一个代码段添加到单独的IHttpModule
实现中,以将其从global.asax中删除。
除此之外,您已将代码添加到将捕获所有异常的两个位置。将针对所有非MVC相关异常调用第一个异常,而后者仅针对MVC异常(排除路由)