【发布时间】:2023-08-30 14:55:02
【问题描述】:
我有一个使用两个端点的 WCF 服务:HTTP 和 https。 我需要添加另一个 https 端点,以便一个需要客户端证书而另一个不需要。
如果我使用自己的基地址添加新的 https 端点,我会收到错误:
System.ArgumentException:此集合已包含方案 https 的地址。此集合中的每个方案最多可以有一个地址。如果您的服务托管在 IIS 中,您可以通过将“system.serviceModel/serviceHostingEnvironment/multipleSiteBindingsEnabled”设置为 true 或指定“system.serviceModel/serviceHostingEnvironment/baseAddressPrefixFilters”来解决问题。
我尝试添加
<serviceHostingEnvironment multipleSiteBindingsEnabled="true">
</serviceHostingEnvironment>
但它没有帮助 - 得到同样的错误。
如果我使用相同的 Listen Uri 但不同的绑定配置添加新的 https 端点,则会出现错误:
System.InvalidOperationException:绑定实例已关联到侦听 URI 'https://localhost:9907/myservice/myservice'。如果两个端点想要共享同一个 ListenUri,它们也必须共享同一个绑定对象实例。
但我需要两种不同的绑定 - 一种具有客户端证书要求,另一种没有。
可行吗?
谢谢
【问题讨论】:
-
我看不出您如何支持同一个 URL 上的多个绑定。客户端和服务器如何知道使用哪个握手?您必须(稍微)改变 URL 并有两个端点定义。
-
我以为我可以使用两个不同的 URL,但它似乎不允许我为同一个服务使用两个 https URL