我有一个 WCF 服务 Service1,它有一个对另一个 WCF 服务 Service 2 的服务引用。
这两个服务都是自托管的,可以在不相互引用时正常访问。
在 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相当缺乏经验。
我已经阅读了有关添加端点的信息,但我不完全确定将其添加到哪个配置文件(例如,调用的客户端或调用另一个服务的服务的主机(?
谢谢
将客户端标记添加到 Service1 App.Config 文件。添加到 Service1 App.Config 文件的客户端终结点应与设置的公开终结点匹配,该终结点是 Service2 的应用.配置文件。服务一中的客户端标记如下所示:
<system.serviceModel>
....Other Config....
<client>
<endpoint address="serviceAddress" binding="bindingType"
bindingConfiguration="BindingConfig" contract="ContractNamespace"
name="NameOfEndpoint">
</client>
</system.serviceModel>
绑定类型需要与托管服务(示例中的服务 2(公开的绑定类型匹配。协定是描述服务公开的方法的接口。