【问题标题】:Call one WCF service from another WCF Service: Endpoint Error?从另一个 WCF 服务调用一个 WCF 服务:端点错误?
【发布时间】:2019-03-06 03:22:58
【问题描述】:

我有一个 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'的默认端点元素。这可能是因为找不到您的应用程序的配置文件,或者因为在客户端元素中找不到与此合同匹配的端点元素。'

关于如何解决这个问题的任何想法?我对 WCF 相当缺乏经验。

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

谢谢

【问题讨论】:

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


    【解决方案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。 Contract 是描述服务公开的方法的接口。

    【讨论】:

    • 谢谢,当我在不同项目中托管服务到定义它们的位置时,我遇到了困难。将绑定和客户端添加到Service1主机的App.Config中修复它!
    猜你喜欢
    • 2011-01-31
    • 2017-04-07
    • 1970-01-01
    • 2018-12-17
    • 1970-01-01
    • 1970-01-01
    • 2015-06-19
    • 1970-01-01
    • 2014-12-01
    相关资源
    最近更新 更多