У меня есть служба WCF, на которую ссылается сборка. Эта Ассамблея упоминается в проекте BizTalk. При вызове метода WCF через Orchestration возникла следующая ошибка: Не удалось найти элемент конечной точки по умолчанию, который ссылается на контракт SubscriberService.ISubscriber в разделе конфигурации клиента ServiceModel.Biztalk - использование WCF через внешнюю сборку
Я искал его, и это известная проблема, если вы попытаетесь вызвать WCF через сборку в проекте Window или веб-приложении. Это можно решить, если добавить проект в проект, который вызывает сборку. И я протестировал сценарий в примерном проекте, и копирование конфигурации клиента в мой тестовый проект решает проблему, но это не работает в проекте BIZTALK.
конфигурации в App.config файле сборки:
<configuration>
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="CustomerMain.HelperAssembly.CoreProcess.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
</configSections>
<system.serviceModel>
<protocolMapping>
<add binding="basicHttpBinding" scheme="http" />
<add binding="basicHttpsBinding" scheme="https" />
</protocolMapping>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_ISubscriber" />
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://localhost:81/SubscriberService.svc"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_ISubscriber"
contract="SubscriberService.ISubscriber" name="BasicHttpBinding_ISubscriber" />
</client>
</system.serviceModel>
</configuration>
конфигурации в файле app.config BizTalk проекта:
<configuration>
<system.serviceModel>
<protocolMapping>
<add binding="basicHttpBinding" scheme="http" />
<add binding="basicHttpsBinding" scheme="https" />
</protocolMapping>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_ISubscriber" bypassProxyOnLocal="true" />
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://localhost:81/SubscriberService.svc"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_ISubscriber"
contract="SubscriberService.ISubscriber" name="BasicHttpBinding_ISubscriber" />
</client>
</system.serviceModel>
</configuration>
Благодарности
Согласен, вам следует позвонить в службу WCF через порт отправки. – Gruff
Совсем согласен с Джоном. Я однажды встретил решение, где они использовали внешнюю сборку для вызова веб-службы из BizTalk. Это вызвало различные проблемы, поскольку это не было многопоточным безопасным, а также неправильно обрабатывало исключения (он просто передал полезную нагрузку на исключение без повышения исключения). Когда я получил бюджет от клиента, это было заменено портом отправки BizTalk, а проект .net был тостом. – Dijkgraaf
Я видел службы, вызванные из BizTalk, таким образом по соображениям производительности - во избежание создания точек сохранения в оркестровке. –