如何在C#中调用WCF服务到WCF服务

时间:2015-05-13 19:50:08

标签: c# wcf

我面临着一个奇怪的问题。

我有一个调用一个外部wcf服务的WCF库。我能够在测试客户端看到预期的结果。

但是我必须在IIS中托管这个WCF库,因为我必须使用一个wcf服务。 我将Wcflibrary dll引用到服务中,但在为外部wcf服务创建对象时遇到以下错误。

  

类型' System.InvalidOperationException'的例外情况发生在   System.ServiceModel.dll但未在用户代码中处理

     

其他信息:无法找到默认端点元素   参考合同' SMSAgent.SMSGatewayPort'在ServiceModel中   客户端配置部分。这可能是因为没有配置   找到了您的应用程序的文件,或者因为没有端点元素   匹配此合同可以在客户端元素中找到。

任何人都可以建议。这种情况有什么问题吗?

1 个答案:

答案 0 :(得分:1)

没有技术原因可以让您无法从其他WCF服务调用WCF服务。您可以根据需要将多个服务呼叫链接在一起。

让我们拨打您的呼叫服务ServiceA和外部服务ServiceB。

您收到的错误是说ServiceA中的客户端配置存在问题。这意味着告诉WCF如何构建从ServiceA到ServiceB的客户端通道的代码丢失或无效。

现在,对于您要呼叫的每项服务,您需要在<system.serviceModel/>配置的endpoint部分内定义client。您的端点定义必须指定:

  1. 端点定义的名称
  2. 您正在致电的服务地址
  3. 通过
  4. 公开服务的哪种传输绑定
  5. 包含服务定义的类型的完全限定名称
  6. 或者,您可能需要包含service identity规范,具体取决于您呼叫的服务是否需要身份验证。

    例如:

    <client>
        <endpoint name="MyExternalEndpoint"
                  address="http://externalservice.com"
                  binding="wsHttpBinding" 
                  contract="ExternalService.IServiceContract" >
          <identity>
            <dns value="externalservice.com" />
          </identity>
        </endpoint>
    </client>