Просмотрите необработанный запрос XML

Я очень плохо знаком с WCF и обменом сообщениями SOAP, но мне удалось соединить довольно хороший клиент, который я использую для загрузки новостей со средства массовой информации. Я генерировал прокси-классы, которые, очевидно, абстрактный много далеко и означают, что я в основном просто создаю объекты, вызывающие методы и выполняю итерации через результаты.

Моя проблема - то, что у меня есть необработанные примеры XML того, на что должны быть похожими вызовы к веб-сервису, и я хочу смочь "сравнить" их с вызовами, которые я выполняю. В основном я должен удостовериться, что вызовы, которые я выполняю, совпадают с XML-файлами в качестве примера для тестирования.

Что я прошу иметь смысл, или я иду об этом неправильным путем? Сообщите мне, существует ли необходимая информация, которую я не учел, я мог барабанить для абзацев, но не уверен, какая информация релевантна.

5
задан Luke Girvin 28 April 2016 в 09:36
поделиться

5 ответов

Использовали ли вы инструмент Service Trace Viewer от Microsoft? Эта страница MSDN предоставит вам подробную информацию о том, как его использовать.

2
ответ дан 18 December 2019 в 13:15
поделиться

The stock answer for this is to use fiddler as a proxy - this will allow you to view the outgoing and incoming messages between your client and the service.

Can't yet speak from personal experience, however team members developing for me (in a former life) have - quite rightly - coded up our service wrappers with built in support for use of a proxy explicitly to simplify use of fiddler.

2
ответ дан 18 December 2019 в 13:15
поделиться

Вы можете создать свой собственный инспектор сообщений с помощью интерфейса IClientMessageInspector и получать необработанные сообщения как для запроса, так и для ответа.

Вот хороший пост о том, как это сделать это ==> http://www.keithelder.net/blog/archive/2008/01/15/How-to-Get-Around-WCFs-Lack-of-a-Preview-Web.aspx

0
ответ дан 18 December 2019 в 13:15
поделиться

Вы можете использовать трассировку 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="trace.e2e" />
    </sharedListeners>
    <trace autoflush="true" />
  </system.diagnostics>
</configuration>

Дополнительные сведения о трассировке WCF можно найти в MSDN: Настройка трассировки .

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

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

10
ответ дан 18 December 2019 в 13:15
поделиться

Я мало что знаю о WCF, но вы можете перенаправить ваше соединение на другой веб-сервер в вашей сети, который зарегистрировал тело где-нибудь. Это позволит вам увидеть, что именно вы посылаете, но потребует некоторой работы с инфраструктурой. Это может быть веб-сервер, запущенный на вашей машине разработки.

0
ответ дан 18 December 2019 в 13:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: