Как получить тело сообщения с соответствующей кодировкой в ​​пользовательском адаптере больших объектов WCF? - PullRequest
1 голос
/ 18 марта 2011

Я пытаюсь написать базовый односторонний настраиваемый WCF LOB-адаптер для использования в BizTalk.Однако целевая система не обязательно поддерживает сообщения XML.Я понимаю, что сообщения, проходящие через пользовательский адаптер WCF, упакованы в конверт XML, и что тело сообщения можно кодировать одним из четырех способов:

  • Xml
  • String
  • BinHex
  • Base64

Эти параметры регулируются конфигурацией свойства Outbound WCF message body, которая принимает свойство, похожее на следующий XMLфрагмент:

<bts-msg-body xmlns='http://www.microsoft.com/schemas/bts2007' encoding='[xml|base64|hex|string]'/>

В реализации метода Execute в моем классе CustomAdapterOutboundHandler как можно узнать, какая кодировка была указана в конфигурации порта отправки?

    /// <summary>
    /// Executes the request message on the target system and returns a response message.
    /// If there isn’t a response, this method should return null
    /// </summary>
    public Message Execute(Message message, TimeSpan timeout)
    {
        // ISSUE: how to retrieve the message body as binary byte[] / stream / whatever ?
        // <bts-msg-body xmlns='http://www.microsoft.com/schemas/bts2007' encoding='[xml|base64|hex|string]'/>

        System.Xml.XmlDictionaryReader reader = message.GetReaderAtBodyContents();

        return null;
    }

1 Ответ

1 голос
/ 05 мая 2011

Наконец выяснил ..

Код, как показано ниже.

object strvalue;
bool result = Message.Properties.TryGetValue("http://schemas.microsoft.com/BizTalk/2006/01/Adapters/WCF-properties#OutboundXmlTemplate", out strvalue);
if (result)
{
  XmlDocument xmldoc = new XmlDocument();
  xmldoc.LoadXml(strvalue.ToString());
  string btsencoding = xmldoc.SelectSingleNode("//*[local-name()='bts-msg-body']").Attributes["encoding"].Value;

// do something useful
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...