我的部署环境在我的 IIS 7.5 托管 WCF 服务前面有 SSL 卸载(和负载平衡)硬件。所以虽然外界会去
https://mydomain.com/MyService.svc
硬件将处理 SSL 并将流量转发到
http://myintranet/MyService.svc
但是,当我从外部获取 WSDL(通过添加“?wsdl”)时,WSDL 地址是“http://mydomain.com/MyService.svc”——我的公共(public)地址的不安全、非 SSL 版本。
我尝试显式设置 listenUri,但出现错误,因为我的站点还需要多个绑定(bind)(我在内部可以通过 SSL 卸载但通过负载均衡器访问它,或者绕过负载均衡器并访问该站点(s) 直接):
When 'system.serviceModel/serviceHostingEnvironment/multipleSiteBindingsEnabled' is set to true in configuration, the endpoints are required to specify a relative address. If you are specifying a relative listen URI on the endpoint, then the address can be absolute.
我已经尝试了多种 baseAddresses、前缀过滤器、多个端点等的组合,但总是以这样或那样的错误结束。尽管我在谷歌上搜索得最好,但我找不到其他人使用此设置。
最佳答案
我们正忙于让 SSL 卸载与 WCF 一起工作。问题是同一个配置开关确定允许的协议(protocol)(必须是 http)和代理中发出的协议(protocol)(必须是 https)。我们的答案是放弃 SSL 卸载要求。我们可能太容易放弃了。
如果您比我们更顽强,您可能会考虑尝试自定义 WSDL 导出器,如文档中所述 here .
关于wcf - 如何在 WSDL 中使用 HTTPS 为卸载 SSL 后的 WCF 服务配置服务端点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9417939/