2010-01-25 3 views
3

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

ответ

4

Вы можете использовать трассировку 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: Configuring Tracing.

Корпорация Майкрософт предоставляет файл Service Trace Viewer Tool для чтения файлов .svclog.

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

+1

Сервис Trace Viewer является удивительным. – Jay

1

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

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