gpt4 book ai didi

c# - 实现 WCF IErrorHandler 仅用于日志记录

转载 作者:太空狗 更新时间:2023-10-29 23:25:08 24 4
gpt4 key购买 nike

可能是个微不足道的问题。我想实现自己的错误处理程序来记录错误并监视正在发生的事情。在这一点上,我不想向客户提供我自己的错误。我希望它是透明的——就像默认的 WCF 行为一样。我应该如何实现 ProvideFault 来实现这一点?

namespace IDATT.Web.Services
{
using System;
using System.ServiceModel.Channels;
using System.ServiceModel.Dispatcher;

public class MyServiceErrorHandler : IErrorHandler
{
public void ProvideFault(Exception error, MessageVersion version, ref Message fault)
{
// ????
}

public bool HandleError(Exception error)
{
return true;
}
}
}

最佳答案

你可以留空。我这样做是为了毫无问题地将错误记录到 Elmah。

编辑

我完全错了。在查看我的实现后,我执行以下操作。如您所见,HandleError 是基本为空的方法,日志记录发生在 ProvideFault 中。

public class ElmahErrorHandler : IErrorHandler
{
public bool HandleError(Exception error)
{
return false;
}


public void ProvideFault(Exception error, MessageVersion version, ref Message fault)
{
if (error == null)
{
return;
}

ErrorSignal.FromCurrentContext().Raise(error);
}
}

HandleError 中返回true 将使WCF 认为没有错误发生。这意味着如果您只是记录错误,这应该始终返回 false。如果错误未得到处理,将调用 ProvideFault,这就是您要进行日志记录的地方。您无需提供故障消息。

关于c# - 实现 WCF IErrorHandler 仅用于日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11022694/

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