Ответ 1
Я думаю, что то, что вы ищете, решается в этом вопросе:
Получение данных с мылом RAW из веб-справочного клиента, запущенного в ASP.net
Это похоже на много кода.
У меня есть приложение С#, являющееся клиентом веб-службы. Одно из моих требований - разрешить захват SOAP, который я отправляю, так что если есть проблема, я могу либо исправить ошибку, либо продемонстрировать, что проблема связана с сервисом, который я вызываю.
Мой класс службы прокси-сервера WebReference происходит от System.Web.Services.Protocols.SoapHttpClientProtocol
, как обычно. Если бы у меня была волшебная палочка, я бы включил этот базовый класс событие OnPost
, которое я мог бы обработать, чтобы записать SOAP в мои журналы и продолжить.
Заканчивая работу сниффера пакетов, такого как WireShark, есть ли простой способ получить этот уровень ведения журнала?
Я думаю, что то, что вы ищете, решается в этом вопросе:
Получение данных с мылом RAW из веб-справочного клиента, запущенного в ASP.net
Это похоже на много кода.
Если приложение запущено в вашем локальном поле, и веб-служба не делает ничего интересного, вы можете использовать Fiddler. Fire Up IE, запустите Fiddler, и вы увидите, что ваши вызовы веб-сервисов проходят через прокси-сервер Fiddler.
Я просто использовал это сегодня утром, чтобы сделать почти то же самое. Мне пришлось доказать, что данные, которые отправлял мой веб-сервис, не были испорчены.
Чтобы увидеть этот трафик в скрипаче, используйте следующий код:
mySoapHttpClientProtocol.Url = mySoapHttpClientProtocol.Url.Replace("localhost", "localhost.fiddler");
В противном случае Visual Studio, встроенный в веб-сервер, обходит все прокси.
Посмотрите SoapExtensions.
Это то, что вам нужно.
По какой-то причине Fiddler не показывал мои локальные вызовы службы при использовании ASP.NET Development Server, который поставляется с Visual Studio. Чтобы обойти это, я изменил URL-адрес веб-службы во время выполнения, чтобы быть портом Fiddler, просто для захвата сообщения SOAP.
Вы можете сделать это из окна Immediate, например:
myservice.Url = "localhost: 8888" (или любой другой порт, на котором установлен Fiddler)
Я использовал клиент SoapUI для тестирования ответов.
Просто "." добавьте адрес в конечную точку после "localhost". например:
<endpoint address="http://localhost.:8868/FEInvoice.asmx" binding="basicHttpBinding"
bindingConfiguration="FEInvoice_Test" contract="EInvoiceIntegration.FEInvoiceSoap"
name="FEInvoice_Test" />