我有一个 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 相当缺乏经验。
我已阅读有关添加端点的信息,但我不完全确定将其添加到哪个配置文件(例如进行调用的客户端或调用另一个服务的服务的主机)?
谢谢
将客户端标签添加到 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)公开的绑定类型相匹配。契约是描述服务公开的方法的接口。
我也有同样的问题。客户端标签到底应该添加到服务app.config中的哪里?