wsHttpBinding更改为客户端app.config中的basicHttpBinding

时间:2011-01-04 21:01:51

标签: .net wcf wcf-binding wcf-configuration

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

服务web.config中的My Endpoint(在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>

1 个答案:

答案 0 :(得分:8)

- Ladislav Mrnka用正确的方向指出了我。非常感谢。

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

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

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

感谢您的帮助。