0

我有一个工作的 WCF 服务,我想连接它,这样我就可以查看日志。所以,我添加了一个 .config 文件,现在我的服务根本无法启动。

在我的代码中,我执行以下操作:

private ServiceHost _myHost;

……

        _myHost= new ServiceHost(typeof (MyType), new Uri(baseUri));
        _myHost.AddServiceEndpoint(typeof (myInterface), new NetNamedPipeBinding(), hostName);
        _myHost.Open();

而且,如前所述,当我没有 .config 文件时,这有效。但是,要查看日志,我必须添加一个如下所示的 .config 文件:

   <system.diagnostics>
  <sources>
     <source propagateActivity="true" name="System.ServiceModel" switchValue="Verbose,ActivityTracing">
        <listeners>
           <add type="System.Diagnostics.DefaultTraceListener" name="Default">
              <filter type="" />
           </add>
           <add initializeData="c:\logs\Traces.svclog" type="System.Diagnostics.XmlWriterTraceListener"
              name="traceListener" traceOutputOptions="LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId, Callstack">
              <filter type="" />
           </add>
        </listeners>
     </source>
  </sources>
</system.diagnostics>
<system.serviceModel>
  <diagnostics>
     <messageLogging logMalformedMessages="true" logMessagesAtServiceLevel="true"
        logMessagesAtTransportLevel="true" />
     <endToEndTracing activityTracing="true" messageFlowTracing="true" />
  </diagnostics>
</system.serviceModel>

我现在在记录器中遇到的错误是Failed to open System.ServiceModel.ServiceHost,它发生在我的ServiceHost. 那么,为什么添加日志配置有什么不同呢?

更新

记录器是 ServiceTraceViewer,这就是我在配置中看到错误的地方。因此,日志记录正在工作,它只是破坏了代码的功能。我在某处读到,如果我使用 .config,我必须在配置中有一个端点。这是真的吗,如果是这样,是否有解决方法,因为我是通过代码来做的

4

0 回答 0