gpt4 book ai didi

wcf - 使用 HandleError 或 ProvideFault 内的 IErrorHandler 在 WCF 中记录异常?

转载 作者:行者123 更新时间:2023-12-04 15:37:43 25 4
gpt4 key购买 nike

我正在使用 IErrorHandler 在 WCF 中进行异常处理,现在我想记录异常,以及堆栈跟踪和导致异常的用户。

我可以看到获取导致异常的用户的唯一方法是:

OperationContext.Current.IncomingMessageProperties.Security.ServiceSecurityContext.PrimaryIdentity

...但这似乎只适用于 ProvideFault 内部,而不适用于 HandleError 内部。有没有办法让用户进入 HandleError?我想使用 HandleError 而不是 ProvideFault 因为它在后台线程上调用并用于错误记录,对吗?

最佳答案

IErrorHandler 的两个方法具有非常明确的职责:

  • HandleError 用于处理所有未捕获的异常 - 这就是为什么它是进行日志记录的最佳位置的原因 - 这真的是
  • 的全部原因
  • ProvideFault 的任务是将您的 .NET 异常转变为可互操作的 SOAP 错误 - 或者完全忽略该异常

  • 当然,从技术上讲,没有什么可以阻止您登录 ProvideFault。方法 - 如果我不得不寻找它,这不是我会去寻找该功能的地方。我倾向于遵循最少惊喜的原则 - 如果该方法被称为 ProvideFault ,我只希望它提供一个 FaultException<T> - 也不要做很多其他的事情。

    要访问服务的安全上下文,请使用以下代码片段:
    ServiceSecurityContext secCtx = ServiceSecurityContext.Current;

    if(secCtx.PrimaryIdentity != null)
    {
    // do something with primary identity
    }

    关于wcf - 使用 HandleError 或 ProvideFault 内的 IErrorHandler 在 WCF 中记录异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2869436/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com