Biztalk - 通过外部程序集

时间:2016-09-05 09:09:02

标签: wcf biztalk .net-assembly

我有一个引用到程序集中的WCF服务。此程序集已在BizTalk项目中引用。 通过Orchestration调用WCF方法时,它给出了以下错误: 无法在ServiceModel客户端配置部分找到引用合同“SubscriberService.ISubscriber”的默认端点元素。

我已经google了它,如果您尝试通过Window项目或Web应用程序中的程序集调用WCF,这是一个已知问题。如果我们在调用程序集的项目中添加配置,则可以解决此问题。我已经在示例项目中测试了场景,并将客户端配置复制到我的测试项目中解决了这个问题,但这在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>

Biztalk Project的App.Config文件中的配置:

<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>

由于

1 个答案:

答案 0 :(得分:1)

因为这是一个BizTalk项目,所以答案从不要这样做开始。

虽然可以,但这不是在BizTalk应用程序中调用服务的正确方法。

因此,解决此问题的正确方法是使用BizTalk WCF适配器将该服务添加到您的应用程序。

如果您团队中的任何人提出异议,我们很乐意帮助您解决这些问题。没有任何情况下你所描述的是正确的事情。