我实现了一个实现IErrorHandler接口的类来记录WCF错误。我想做的事情之一是记录发生异常时用户身份与连接到我的服务的对象。我的所有日志记录都发生在IErrorHandler接口的HandleError()方法中,但由于HandleError()可能没有当前的操作上下文,我无法获取SecurityContext.PrimaryIdentity。我想出了以下代码来捕获HandleError方法中可能无法使用的内容,但我不确定它是否适用于所有情况。
public class MyErrorHandler : IErrorHandler
{
private IIdentity identity;
public bool HandleError(Exception error)
{
// Do something with identity
return false;
}
public void ProvideFault(Exception error, MessageVersion version, ref Message fault)
{
this.identity = Operation.Current.SecurityContext.PrimaryIdentity;
}
}
上面的代码似乎正在运作,但有任何问题吗?
谢谢!
答案 0 :(得分:1)
出于某种原因,我认为每次出现异常时都会创建该类。在任何情况下,我都可以通过使用Exception对象的Dictionary属性来存储我想要使用异常记录的自定义数据来解决我的问题。