5

在 WCF 服务中,我将端点绑定设置为 wsHttpBinding。但是,当我使用 Visual Studio 添加服务引用时,我的客户端 app.config 将绑定显示为 basicHttpBinding。有人知道为什么会这样吗?

我在服务 web.config 中的端点(托管在 IIS 7.5 中)。从 baseAddresses 获取地址

<endpoint address=""
    binding="wsHttpBinding"
    bindingConfiguration="wsHttpServiceBinding"
    contract="MyProject.IMyService" />

客户端 app.config:

<client>
    <endpoint address="http://example.com/MyService.svc"
    binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_MyService"
    contract="Service.MyService" name="BasicHttpBinding_MyService" />
</client>
4

1 回答 1

8

-- Ladislav Mrnka 用这个为我指明了正确的方向。非常感谢。

我试图让问题保持简单,因为我认为答案可能是直截了当的。但是,我应该更详细地解释我的设置,因为这是我的问题的答案所在。

我没有让我的服务合同 (IMyService) 驻留在我的 WCF 服务应用程序中,而是将它放在另一个域项目中,我保留所有接口,以便它们可以在许多不同的项目中重用。在我的 WCF 服务应用程序 .web.config 中,我的服务名称指向接口项目而不是实现。这导致 VS2010 (svcutil.exe) 基于默认设置创建代理和配置(我假设驻留在 machine.config 中(对于 WCF 4))。

因此,总结一下可能遇到此问题的其他任何人,服务名称指向错误的位置。确保服务名称指向实现(通常在 WCF 服务应用程序 - MyProject.MyService 中),并且端点合同指向服务合同(在 WCF 服务应用程序或外部项目 - MyProject.IMyService 或 AnotherProject.Interfaces.IMyService )。

感谢你的帮助。

于 2011-01-05T17:56:19.540 回答