我有一个使用ELMAH记录未处理异常的MVC Web应用程序。我现在正从Windows身份验证转移到ADFS身份验证。该应用程序已经过修改,并且可以正常运行。但是现在当我检查错误时,用户信息不再存在。这很有意义,因为ELMAH使用上下文身份而不是声明来检索此信息。你们当中有人知道我该怎么做才能再次记录此信息吗?
答案 0 :(得分:0)
如果您可以接受小技巧,则可以enrich ELMAH errors using error filtering hook。简而言之,您需要在ErrorLog_Filtering
文件中实现Global.asax.cs
方法:
void ErrorLog_Filtering(object sender, ExceptionFilterEventArgs args)
{
var httpContext = args.Context as HttpContext;
if (httpContext != null)
{
var error = new Error(args.Exception, httpContext);
error.User = GetUserFromDatabase();
ErrorLog.GetDefault(httpContext).Log(error);
args.Dismiss();
}
}
在示例中,我用伪方法的值更新了User
属性。您要如何实现它取决于您如何从ADFS获取当前登录的用户。最后,我再次记录该错误,并消除了最初的(少用户)错误。