Отправить контекст сообщения Biztalk в службу WCF - PullRequest
0 голосов
/ 19 ноября 2010

При использовании адаптера WCF часть тела сообщения отправляется в качестве тела сообщения WCF, но можно ли сделать так, чтобы также передавался контекст сообщения Biztalk (возможно, в заголовке сообщения WCF)?

1 Ответ

3 голосов
/ 21 декабря 2010

На следующей странице в MSDN кратко объясняется, как можно использовать настраиваемые заголовки SOAP при отправке сообщений за пределы BizTalk с помощью адаптеров WCF.

По сути, вы не можете напрямую отправить контекст своего BizTalkсообщения за пределами BizTalk.Это было бы бессмысленно.Вместо этого вы можете выбрать подмножество свойств в контексте ваших сообщений BizTalk, которые будут отправлены адаптеру WCF через пользовательские заголовки SOAP.

Обработка пользовательских заголовков SOAP Исходящий запрос WCF

Заголовки SOAP, связанные с исходящим запросом, должны быть явно записаны в контекст исходящего сообщения.

При использовании адаптеров WCF заголовки SOAP определяются с помощью встроенного WCF.OutboundCustomHeaders. свойство контекста.Это свойство содержит все пользовательских заголовков SOAP, заключенных в дополнительный тег .

Заголовки могут быть указаны из оркестровки со следующим синтаксисом в форме выражения:

OutboundMessage(WCF.OutboundCustomHeaders) = "" +
  "<headers>"
  "<tns1:Header1 xmlns:tns1='http://tns1'>" +
  "</tns1:Header1>" +
  "<tns2:Header2 xmlns:tns2='http://tns2'>" +
  "</tns2:Header2>" +
  "</headers>" +
  "";

Обратите внимание, что пользовательские заголовки SOAPа такжеиспользуется в целях иллюстрации выше, должно быть частью вашего контракта на обслуживание WCF.Когда вы создаете ссылку на службу для использованной службы WCF, эти пользовательские заголовки SOAP будут доступны в качестве сгенерированных схем в вашей оркестрации.

Как отправить определенные свойства контекста в настраиваемый заголовок SOAP

Теперь, когда вы знаете, как задать пользовательские заголовки SOAP, вы можете использовать этот синтаксис для отправки определенных свойств из контекста ваших сообщений в пользовательские заголовки SOAP, например:

OutboundMessage(WCF.OutboundCustomHeaders) =
  System.String.Format(
    "" +
    "<headers>"
    "<tns1:Header1 xmlns:tns1='http://tns1'>" +
    "  <tns1:Property1>{0}</tns1:Property1>" +
    "  <tns1:Property2>{1}</tns1:Property2>" +
    "</tns1:Header1>" +
    "</headers>" +
    ""
  , InboundMessage(FILE.ReceivedFileName)
  , InboundMessage(BTS.MessageType)
  ));

В примеревыше, два встроенных свойства контекста FILE.ReceivedFileName и BTS.MessageType были выбраны и записаны в пользовательский заголовок SOAP.В реальном сценарии вы можете проверить, существуют ли свойства в контексте, прежде чем их использовать.

Вы также можете использовать любое пользовательское свойство контекста, если оно было объявлено в соответствующей схеме свойств.

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