【发布时间】:2013-08-16 14:55:09
【问题描述】:
我有一个 WCF 服务,我们称之为UserService。 UserService 引用了一个类库。我们称之为DoWork.dll。 DoWork.dll 有一个 WCF 服务引用,它指向另一个我们称为 CompanyService 的服务。
现在,当我第一次尝试调用 UserService 时,我会收到一个未配置端点的错误消息。在网上阅读后,我发现我需要将CompanyService 绑定和客户端信息添加到UserService 的web.config 下<system.serviceModel> 节点下。
这里是:
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IComapnyService" />
</basicHttpBinding>
</bindings>
<client>
<endpoint name="BasicHttpBinding_ICompanyService"
address="http://it-dev.company.local:81/Project/Copmpany/CompanyService.svc"
binding="basicHttpBinding"
bindingConfiguration="BasicHttpBinding_IComapnyService"
contract="CompanyService.ICompanyService" />
</client>
我遇到的问题是contract="CompanyService.ICompanyService" 显示错误:
“合同”属性无效 - 根据其数据类型“clientContractType”,值“CompanyService.ICompanyService”无效 - 枚举约束失败。
现在,如果我将 CompanyService 引用直接添加到 UserService WCF 项目,错误就会消失(显然)。但是,我不应该这样做。我已经尝试完全限定 ICompanyService 合同所在的命名空间,但这也不起作用。我已经删除了 .suo 文件并重建了项目,但这也不起作用(在网络上的其他地方建议)。另外,如果我输入contract=,我会得到下拉列表,但找不到CompanyService.ICompanyService(仅当我直接在UserService 项目中引用该服务时)。
我曾尝试使用Tools > WCF Service Configuration Editor 对其进行配置,但这并没有帮助。
我应该注意到一切似乎都工作正常,但我不喜欢智能感知给我蓝色波浪下划线和错误消息的事实。我有一种感觉,我需要在 web.config 中添加其他内容才能使其正常工作,因为 UserService 引用了 DoWork.dll,而 DoWork.dll 又引用了我无法正确查看其合同的 CompanyService。
非常感谢任何建议。提前致谢。
【问题讨论】:
-
我最近遇到了这个问题,发现实际上包含完整的命名空间会导致我的问题。对遇到此问题的其他人有用。
标签: wcf web-config wcf-endpoint