3

我制作了一个基本的 WCF 服务库并创建了一个名为GetResult(). 我已设置 WCF 跟踪日志记录以将警告记录到文件中。由于某种奇怪的原因,这会正确记录所有抛出的异常,但它本身除外。System.Exception例如,这记录很好:

[OperationContract]
public string GetResult()
{
    // exception is logged in file:
    throw new DivideByZeroException();
    // or
    // throw new ApplicationException();
    // or
    // throw new FileNotFoundException();
    // or anything else, it seems
}

但这不会记录任何内容:

[OperationContract]
public string GetResult()
{
    // exception is not logged!
    throw new Exception();
    // or
    // throw new Exception("my message");
}

在后一种情况下,甚至不会创建日志文件。如果它已经存在,那么它不会被写入。

我究竟做错了什么?

这是我的 app.config 设置:

<system.diagnostics>
    <sources>
        <source name="System.ServiceModel.MessageLogging" switchValue="Warning">
            <listeners>
                <add name="ServiceModelTraceListener" />
            </listeners>
        </source>
        <source name="System.ServiceModel" switchValue="Warning">
            <listeners>
                <add name="ServiceModelTraceListener" />
            </listeners>
        </source>
        <source name="System.Runtime.Serialization" switchValue="Warning">
            <listeners>
                <add name="ServiceModelTraceListener" />
            </listeners>
        </source>
    </sources>
<trace autoflush="true" />
    <sharedListeners>
        <add initializeData="c:\temp\logs\wcf.svclog" 
       type="System.Diagnostics.XmlWriterTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
       name="ServiceModelTraceListener" 
       traceOutputOptions="Timestamp" />
    </sharedListeners>
</system.diagnostics>
4

0 回答 0