从另一个WCF服务调用一个WCF服务:端点错误?

时间:2018-10-01 02:37:29

标签: c# visual-studio web-services wcf

我有一个WCF服务Service1,该服务具有对另一个WCF服务Service2的服务引用。

这两种服务都是自托管的,在不相互引用时可以正常访问。

在Service1的方法内部,我调用了另一个服务

public String DoWork()
{
    using(Service2Client client = new Service2Client())
    {
         return client.DoWork();
    }
}

包含该代码的方法是从另一个引用Service1的项目中调用的,如下所示:

using (Service1Client client = new Service1Client())
{
     result = client.DoWork();
}

当该项目尝试使用该服务时,我收到一条错误消息:

System.ServiceModel.FaultException`1:'在ServiceModel客户端配置部分中找不到引用合同'Service2Reference.IService2'的默认终结点元素。这可能是因为没有为您的应用程序找到配置文件,或者是在client元素中找不到与该协定匹配的端点元素。'

关于如何解决此问题的任何想法?我对WCF经验不足。

我已经阅读了有关添加终结点的信息,但是我不确定要将该终结点添加到哪个配置文件(例如,进行调用的客户端或调用另一项服务的服务的主机)?

谢谢

1 个答案:

答案 0 :(得分:1)

将客户端标记添加到Service1 App.Config文件。添加到Service1 App.Config文件的客户端端点应与设置为Service2的App.Config文件的公开端点匹配。服务一中的客户端标签如下所示:

    <system.serviceModel>
        ....Other Config....
        <client>
            <endpoint address="serviceAddress" binding="bindingType"
             bindingConfiguration="BindingConfig" contract="ContractNamespace"
             name="NameOfEndpoint">
        </client>
     </system.serviceModel>

绑定类型需要与托管服务(示例中的服务2)公开的绑定类型匹配。合同是描述服务公开的方法的接口。