我有一个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经验不足。
我已经阅读了有关添加终结点的信息,但是我不确定要将该终结点添加到哪个配置文件(例如,进行调用的客户端或调用另一项服务的服务的主机)?
谢谢
答案 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)公开的绑定类型匹配。合同是描述服务公开的方法的接口。