ログを確認できるように、接続したい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を使用する場合は、構成にエンドポイントが必要であるとどこかで読みました。それは本当ですか?もしそうなら、私はコードを介してそれをしているので、これに対する回避策はありますか?