WCF REST Отладка - PullRequest
       5

WCF REST Отладка

3 голосов
/ 25 января 2010

Как я могу записать, что xml отправляется в мою службу REST WCF до того, как его десериализовать в мой класс обработки данных?

Ответы [ 2 ]

4 голосов
/ 25 января 2010

Вы можете использовать трассировку WCF для регистрации необработанных сообщений XML.

Трассировка не включена по умолчанию. Вы можете включить и настроить трассировку, отредактировав файл конфигурации приложения. Следующий пример .config включает трассировку WCF с необработанным ведением журнала сообщений:

<configuration>
  <system.serviceModel>
    <diagnostics>
      <messageLogging maxMessagesToLog="30000"
              logEntireMessage="true"
              logMessagesAtServiceLevel="true"
              logMalformedMessages="true"
              logMessagesAtTransportLevel="true">
      </messageLogging>
    </diagnostics>
  </system.serviceModel>
  <system.diagnostics>
    <sources>
      <source name="System.IdentityModel" 
              switchValue="Verbose" 
              logKnownPii="true">
        <listeners>
          <add name="xml" />
        </listeners>
      </source>
      <!-- Log all messages in the 'Messages' tab of SvcTraceViewer. -->
      <source name="System.ServiceModel.MessageLogging">
        <listeners>
          <add name="xml" />
        </listeners>
      </source>
      <!-- ActivityTracing and propogateActivity are used to 
           flesh out the 'Activities' tab in SvcTraceViewer to 
           aid debugging. -->
      <source name="System.ServiceModel" 
              switchValue="Error, ActivityTracing" 
              propagateActivity="true">
        <listeners>
          <add name="xml" />
        </listeners>
      </source>
      <!-- This records Microsoft.IdentityModel generated traces, 
           including exceptions thrown from the framework. -->
      <source name="Microsoft.IdentityModel" switchValue="Warning">
        <listeners>
          <add name="xml" />
        </listeners>
      </source>
    </sources>
    <sharedListeners>
      <add name="xml" 
           type="System.Diagnostics.XmlWriterTraceListener" 
           initializeData="C:\logs\trace.svclog" />
    </sharedListeners>
    <trace autoflush="true" />
  </system.diagnostics>
</configuration>

Подробнее о трассировке WCF можно узнать из MSDN: настройка трассировки .

Microsoft предоставляет Service Trace Viewer для чтения файлов .svclog.

Убедитесь, что путь, определенный в initializeData, доступен для записи вашей службой.

1 голос
/ 25 января 2010

Если вы хотите посмотреть на необработанный HTTP-трафик, прокси-инструмент, такой как Fiddler , является самым простым способом. Вы сможете увидеть всю информацию, которая была POST / PUT'd для вашей службы REST.

Если вы имеете в виду «log» как «всегда записывать HTTP-трафик в определенное место в файле», то вы можете использовать встроенную трассировку, чтобы сделать большую часть этого. Вот ссылка на пример, как это сделать, в противном случае просто посмотрите «Отслеживание WCF» онлайн. Вы найдете массу замечательных примеров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...