为什么我不能只跟踪WCF服务端的错误?

时间:2010-07-29 11:08:58

标签: wcf logging trace

我有一个wcf服务,有时会产生错误,例如“InnerException消息是'在对象图中可以序列化或反序列化的最大项数是'65536'”。我知道如何解决这个特殊问题,但现在我想创建一个只将错误(和严重错误)保存到日志中的跟踪。

问题是我的日志会保存所有内容(包括成功通话)或根本不保存任何内容。所以我的问题是,我的web.config有什么问题?

<system.diagnostics>
    <trace autoflush="true" />
    <sources>
        <source name="System.ServiceModel" propagateActivity="true" switchValue="Error">
            <listeners>
                <add name="xml">
                </add>
            </listeners>
        </source>
    </sources>
    <sharedListeners>
        <add initializeData="C:\mylog.svclog"
             type="System.Diagnostics.XmlWriterTraceListener"
             name="xml" />
    </sharedListeners>
</system.diagnostics>

我尝试过使用switchValue的所有不同组合,但是没有一个给我我想要的结果(= catch错误,但没有成功调用)。

有没有人有想法?

1 个答案:

答案 0 :(得分:1)

如果您需要仅限服务端日志记录,您可能需要查看可以放入服务类的IErrorHandler界面。

此接口将公开两个方法

public bool HandleError(Exception error)

public void ProvideFault(Exception error, MessageVersion ver, ref Message msg)

这将允许您利用服务端发生的所有异常 - 将这些异常记录到您自己的日志文件中,您应该没问题。