У меня есть сервисное приложение WCF, и в этом приложении я делаю вызовы к стороннему веб-сервису по безопасному соединению.
Я пытался просмотреть ответные потоки запроса с помощью скрипача, но я разочаровался в нем после попытки больше чем половины дня, применив все, что я мог найти по Интернету. Это имеет проблему с сертификатами eventhough, я сделал больше сертификатов скрипачей доверяемой зоне.
Что мой лучший выбор состоит в том, чтобы просто видеть запросы xml и ответы, которые я делаю к этому стороннему веб-сервису?
Я использую сгенерированные прокси-классы, таким образом, у меня в настоящее время нет доступа к сырым данным xml, что я отправляю и получаю назад. Мне любопытно, если я по усложнению чего-то, что может быть сделано намного более простое. Это - моя машина разработки, и у меня есть доступ к в значительной степени всему, никаким ограничениям.
Простой способ сделать это?
Править:
В данный момент я не должен даже использовать Трассировку. Я просто должен видеть сериализированный вывод своего запроса/ответа. Даже если я могу сделать это от отладчика Visual Studio, или такой Он поможет.
Поскольку я пытался прочитать мыльные сообщения в веб-службу asmx, которая ссылается на мое приложение WCF, и из нее, решение моей проблемы заключалось в создании класс, который наследуется от System.Web.Services.Protocols.SoapExtension, зарегистрируйте этот класс в web.config, чтобы весь трафик маршрутизировался через этот класс и просматривался.
Ни одно из этих сообщений не отображалось в трассировках WCF, поэтому этого было недостаточно. Однако было полезно, что я выучил это, так что теперь я могу видеть все, что происходит между моим сервисным приложением wcf и веб-приложением.
В этой статье я понял это how-to-capture-soap- конверты-при-потреблении-веб-службы
Используйте WCF Tracing - он работает очень хорошо и поставляется с удобной утилитой просмотра трассировки .
Вы можете настроить множество параметров, но по сути, вам придется добавить что-то вроде этого в конфигурацию службы и клиента WCF:
<configuration>
<system.diagnostics>
<sources>
<source name="System.ServiceModel"
switchValue="Information, ActivityTracing"
propagateActivity="true">
<listeners>
<add name="traceListener"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData= "c:\log\Traces.svclog" />
</listeners>
</source>
</sources>
</system.diagnostics>
</configuration>
Есть множество "прослушивателей трассировки" из коробки - один записывает в консоль вывода в Visual Studio, этот здесь создает файлы XML, или вы можете хранить данные в таблице базы данных SQL Server - и весь механизм является расширяемым, вы также можете написать свои собственные прослушиватели трассировки!
См. Также здесь: Использование трассировки WCF и здесь FAQ по трассировке WCF для получения дополнительной информации.
Добавьте это в свой app.config:
<system.diagnostics>
<sources>
<source name="System.ServiceModel.MessageLogging">
<listeners>
<add name="messages" type="System.Diagnostics.XmlWriterTraceListener" initializeData="messages.svclog" />
</listeners>
</source>
</sources>
<system.serviceModel>
<diagnostics>
<messageLogging
logEntireMessage="true"
logMalformedMessages="true"
logMessagesAtServiceLevel="true"
logMessagesAtTransportLevel="false"
maxMessagesToLog="-1"/>
</diagnostics>
Он будет записывать все сообщения в messages.svclog. Затем вы можете просмотреть их.