我已按照此处的各种说明配置我的WCF服务以支持http和https。基本上,他们都非常指出我需要为每个协议复制我的端点,所以我的服务器配置如下:
<service behaviorConfiguration="MyApp.WebServices.ServiceBehavior" name="MyApp.WebServices.ServiceLibrary">
<endpoint address="" binding="basicHttpBinding" bindingConfiguration="basicHttpsBinding" name="AuthenticationService" contract="MyApp.WebServices.IAuthenticationService" />
<!-- HTTP enpoints -->
<endpoint address="" binding="basicHttpBinding" bindingConfiguration="basicBinding" name="AuthenticationService" contract="MyApp.WebServices.IAuthenticationService" />
</service>
所以我有不同的绑定,一个用于http,一个用于https用于每个端点。
我的问题是当我使用Visual Studio 2010服务引用为此Web服务创建客户端时。我希望能够将服务引用指向:
http://mysite.com/myapp/servicelibrary.svc
或
https://mysite.com/myapp/servicelibrary.svc
我的理想情况是,如果服务引用使用http或https,则只有使用相同协议的相应端点才会被提取到客户端app.config文件中。实际上,如果我引用http servicelibrary,我会得到两对端点:
<client>
<endpoint address="https://ip-0af84f03/myapp/ServiceLibrary.svc"
binding="basicHttpBinding" bindingConfiguration="AuthenticationService"
contract="Services.IAuthenticationService" name="AuthenticationService" />
<endpoint address="http://mysite.com/myapp/ServiceLibrary.svc"
binding="basicHttpBinding" bindingConfiguration="AuthenticationService1"
contract="Services.IAuthenticationService" name="AuthenticationService1" />
</client>
因此,当我尝试从AuthenticationService访问函数时,我收到此错误:
无法加载合同“Services.IAuthenticationService”的端点配置部分,因为找到了该合同的多个端点配置。请按名称指明首选端点配置部分。
我知道我可以通过在我的客户端上从我的app.config手动删除不需要的重复端点来消除错误,但我的偏好是他们在设置服务引用时不首先显示。
这可能吗?