Ведение журнала WCF без регистрации SOAP-запроса - PullRequest
0 голосов
/ 04 июля 2019

Я знаю, что об этом спрашивали несколько раз, и я мог прочитать их все, включая MSDN.Похоже, мой сценарий немного отличается.Я думаю, что у меня есть все настройки, включая узел system.serviceModel, system.diagnostics и разрешение.Но он регистрирует только тот, который говорит «Получить раздел конфигурации».То, что я хочу, - это XML, который я передаю (включая заголовки безопасности) веб-службе.Он сгенерировал файл svclog так, похоже, у меня есть разрешение (после того, как я предоставил КАЖДОМУ полный доступ), но он содержит только это:

enter image description here

Вот мой конфиг

<source propagateActivity="true" name="System.ServiceModel" switchValue="Information, ActivityTracing">
    <listeners>
      <add name="ServiceModelMessageLoggingListener" />
    </listeners>
  </source>
  <source name="System.ServiceModel.MessageLogging">
    <listeners>
      <add name="ServiceModelMessageLoggingListener" />
    </listeners>
  </source>
</sources>
<sharedListeners>
  <add initializeData="c:\logs\Traces.svclog" type="System.Diagnostics.XmlWriterTraceListener"
    name="ServiceModelMessageLoggingListener" traceOutputOptions="LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId, Callstack">
  </add>
</sharedListeners>

<system.serviceModel>
<services>
  <service name="System.ServiceModel">
    <endpoint address="<webservice url>" binding="basicHttpBinding" contract="<contract name from ServiceContractAttribute>"></endpoint>
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"  />
  </service>
</services>
<diagnostics>
  <messageLogging logEntireMessage="true" logKnownPii="true" logMalformedMessages="true"
    logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="true" />
  <endToEndTracing propagateActivity="true" activityTracing="true"
    messageFlowTracing="true" />
</diagnostics>
<behaviors>
  <serviceBehaviors>
    <behavior>
      <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
      <serviceDebug includeExceptionDetailInFaults="false"/>
    </behavior>
  </serviceBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />

Потратил весь день на настройку конфигурации и разрешений.Что еще я мог упустить?

1 Ответ

1 голос
/ 04 июля 2019

См. Приведенную ниже конфигурацию перекодирования журнала сервера (принцип такой же, как на стороне клиента).
Поскольку технология трассировки WCF основана на платформе Dotnet, источник трассировки должен быть настроен в первую очередь.

<system.diagnostics>
    <sources>
      <source name="System.ServiceModel.MessageLogging">
        <listeners>
          <add type="System.Diagnostics.XmlWriterTraceListener" name="xmlLog" initializeData="myLogs.svclog"/>
        </listeners>
      </source>
    </sources>
  </system.diagnostics>
  <system.serviceModel>
    <services>
      <service name="WcfLogSample.Service1">
        <endpoint address="" binding="basicHttpBinding" contract="WcfLogSample.IService1"></endpoint>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"></endpoint>
      </service>
    </services>
    <diagnostics>
      <messageLogging logEntireMessage="true" logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="false" />
    </diagnostics>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
  </system.serviceModel>

После завершения вызова клиента сервер регистрирует связь, и нам нужно перезапустить IIS, чтобы проверить журнал, расположенный в корневом каталоге.
enter image description here
Вот несколько ссылок, желаю, чтобы это было полезно для вас.
https://docs.microsoft.com/en-us/dotnet/framework/wcf/samples/tracing-and-message-logging
https://docs.microsoft.com/en-us/dotnet/framework/wcf/diagnostics/tracing/configuring-tracing

Обновлено:
Пожалуйста, используйте мою конфигурацию нижена стороне клиента.

      <system.diagnostics>
    <sources>
      <source name="System.ServiceModel.MessageLogging">
        <listeners>
          <add type="System.Diagnostics.XmlWriterTraceListener" name="xmlLog" initializeData="myLogs.svclog"/>
        </listeners>
      </source>
    </sources>
  </system.diagnostics>
    <system.serviceModel>
      <diagnostics>
        <messageLogging logEntireMessage="true" logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="false" />
      </diagnostics>
        <bindings>
            <basicHttpBinding>
                <binding name="BasicHttpBinding_IService1" />
            </basicHttpBinding>
        </bindings>
        <client>
            <endpoint address="http://10.157.13.70:8733/Service1.svc" binding="basicHttpBinding"
                bindingConfiguration="BasicHttpBinding_IService1" contract="ServiceReference1.IService1"
                name="BasicHttpBinding_IService1" />
        </client>
    </system.serviceModel>

Результат.
enter image description here
Не стесняйтесь сообщать мне, если есть что-то, с чем я могу помочь.

...