Biztalk WCF адаптер, как отправить пустой текст сообщения от biztalk - PullRequest
2 голосов
/ 04 июля 2011

У меня есть оркестровка Biztalk, используемая через порт WCF с запросом-ответом. Так как клиент не заинтересован в ответе (то есть, запускает и забывает), я хочу только отправить тело сообщения мыла в ответе, например.

, поскольку я понимаю, что адаптер Biztalk WCF не поддерживает настоящие односторонние операции. Я попытался отправить пустой XML-документ, но я получил сообщение об ошибке EmptyPartException XLANG. Любые предложения о том, как просто отправить тело сообщения, пожалуйста?

Ответы [ 2 ]

1 голос
/ 06 июля 2011

Я достиг этого раньше, используя IIS и местоположение получения BizTalk с помощью адаптера WCF-CustomIsolated.

В транспортной конфигурации расположения получения для WCF-CustomIsolated для привязки должно быть установлено значение httpTransport.Там не так много, чтобы настроить там.Если вы хотите использовать обычную аутентификацию (убедитесь, что она идет поверх SSL!) И включить HTTP GET для предоставления метаданных WCF (не очень хорошая идея в производстве), то экспортированная конфигурация будет выглядеть примерно так (для BizTalk 2010):

<?xml version="1.0"?>
<configuration>
  <enterpriseLibrary.ConfigurationSource selectedSource="ESB File Configuration Source" />
  <system.serviceModel>
    <services>
      <service behaviorConfiguration="ServiceBehavior" name="BizTalk">
        <endpoint address="http://localhost/MyAwesomeService/SuperiorEndpoint.svc" behaviorConfiguration="EndpointBehavior" binding="customBinding" bindingConfiguration="88BC0BD4-A7DD-11E0-86EF-DF374824019B" name="WcfService_AwesomeService/SuperiorEndpoint" contract="BizTalk" />
      </service>
    </services>
    <behaviors>
      <endpointBehaviors>
        <behavior name="EndpointBehavior" />
      </endpointBehaviors>
      <serviceBehaviors>
        <behavior name="ServiceBehavior">
          <serviceMetadata httpGetEnabled="true" httpGetUrl="" httpsGetEnabled="true" httpsGetUrl="" />
          <serviceDebug />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <bindings>
      <customBinding>
        <clear />
        <binding name="88BC0BD4-A7DD-11E0-86EF-DF374824019B">
          <httpTransport authenticationScheme="Basic" />
        </binding>
      </customBinding>
    </bindings>
  </system.serviceModel>
</configuration>

Я использовал мастер публикации служб WCF BizTalk для создания фактической службы WCF с типом транспорта, установленным на WCF-CustomIsolated.Метод, использованный для создания службы WCF, был «Публикация схем как службы WCF».Разумеется, сначала необходимо иметь схему BizTalk, скомпилированную в сборку.

Для описания веб-службы я удалил метод Operation / web по умолчанию и добавил в службу новый односторонний веб-метод.Чтобы установить схему для входного сообщения, щелкните ее правой кнопкой мыши, выберите «Выбрать схему» и перейдите к сборке схемы BizTalk.Конечно, вы должны назвать все соответствующим образом.После публикации службы перейдите к IIS (или к вновь созданному web.config), чтобы настроить новое блестящее веб-приложение (т. Е. Его аутентификацию и авторизацию).

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

HTTP/1.1 200 OK
Cache-Control: private
Content-Length: 84
Content-Type: application/soap+xml; charset=utf-8
Server: Microsoft-IIS/7.5
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Wed, 06 Jul 2011 14:16:58 GMT

<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope"><s:Body/></s:Envelope>

Просто убедитесь, что вызывающий абонент может понимать коды состояния HTTP, как будто что-то не так, именно это будет указывать на проблему (т. Е. HTTP 501 и т. Д.).,Вы также можете поэкспериментировать с

0 голосов
/ 04 июля 2011

Если вас интересуют только асинхронные отправки, используйте адаптер WCF-NetMsmq.Или я что-то упустил?

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