(Если что-то здесь нужно уточнить / более подробно, пожалуйста, дайте мне знать.)
У меня есть приложение (C #, 2. * framework), которое взаимодействует со сторонним веб-сервисом с использованием SOAP. Я использовал WSCF-надстройку thinktecture против поставляемого WSDL для создания реализации на стороне клиента. По независящим от меня причинам обмен сообщениями SOAP использует WSE2.0 для безопасности (реализация thinctecture должна была быть изменена, чтобы включить ссылку на WSE2.0). В дополнение к «обычному» пакету данных я прикрепляю сохраненный сертификат X509 и двоичный токен безопасности от предыдущего вызова к другому веб-сервису. Мы используем какое-то SSL-шифрование - я не знаю деталей.
Вся необходимая сериализация / десериализация содержится в клиенте веб-службы - то есть, когда мне после вызова клиента возвращается управление, вся строка XML, содержащаяся в ответе SOAP, недоступна мне - только десериализованные компоненты. Не поймите меня неправильно - я думаю, что это хорошо, потому что это означает, что мне не нужно делать это самому.
Однако для того, чтобы у меня было что-то, что стоит хранить / архивировать, мне нужно повторно сериализовать данные в корневом элементе. Это кажется пустой тратой ресурсов, так как мой результат был в ответе SOAP.
Теперь на мой вопрос:
Как я могу получить доступ к «чистой» версии ответа SOAP, чтобы мне не пришлось повторно сериализовать все для хранения / архивирования?
Редактировать. Мое приложение - это «бесформенное» приложение для Windows, работающее в качестве сетевой службы, которое запускается монитором триггера клиента WebsphereMQ. Я не думаю, что ASP.NET решения будут применяться.
Правка. Поскольку до сих пор существует общее мнение о том, что не имеет значения, является ли мое приложение ASP.NET или нет, я предоставлю решение CodeMelt (и, соответственно, Криса).