Разделение данных на и из строки с помощью стиля мыльного сообщения - PullRequest
1 голос
/ 10 мая 2011

У меня есть прокси веб-службы.На этом прокси есть метод, который принимает два пользовательских типа.Когда я вызываю веб-службу, создается мыльное сообщение.

В моем сценарии я фиксирую это мыльное сообщение вручную (используя fiddler).Я хотел бы иметь возможность десериализовать строку, содержащую это мыльное сообщение (которую я читаю из файла, созданного вручную), обратно в экземпляры моих двух оригинальных типов.

Я знаю, что это достаточно легко сделать сСериализация Xml DOM, XPath и Xml для этих двух типов.Я уже делаю это, хотя в настоящее время с двумя отдельными файлами.Я хотел бы объединить их и избежать ручного форматирования захваченного сообщения Soap.

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

1 Ответ

1 голос
/ 19 июня 2011

Похоже, .Net Framework не раскрывает это в простой в использовании способом.Пользовательский код, который записывает / считывает данные (в SoapHttpClientProtocol и SoapServerProtocol), не предоставляется непосредственно пользователю.

Этот код можно использовать, по крайней мере, для того, чтобы как минимум получить внутреннюю часть запроса для правильного сопоставления:

XmlTypeMapping xmlTypeMapping = new SoapReflectionImporter()
    .ImportTypeMapping(typeof(T));
var xmlSerializer = new XmlSerializer(xmlTypeMapping);

Остальную сериализацию / десериализацию вам придется выполнить самостоятельно (написав заголовок и тело SOAP с пользовательским кодом и пропустив читатель XML вперед к своему контенту, соответственно).

Вы также можете попробовать использовать SoapFormatter, хотя это устарело и совершенно не работает для многих сценариев (в том числе обобщенных):

...