我开发了一个示例WCF服务,并在IIS 8.5,Windows Server 2012 R2中托管。请注意,此服务器已添加到F5负载平衡设置(我不知道此设置的详细信息),我应该使用URL https://loadbalanceddomainname/servicename.svc调用此服务。
在IIS中,我进行了以下配置:
使用此配置,当我尝试浏览网址https://loadbalanceddomainname/servicename.svc时,它会给我一个504错误(如Fiddler所示 - >"
[Fiddler] ReadResponse()失败:服务器没有返回完整的 响应此请求。服务器返回0个字节。
&#34)
但是,在IIS中,如果我使用主机头和#34; loadbalanceddomainname"再向端口80添加一个绑定,我会得到响应,如下面的屏幕截图所示。
虽然我能够在浏览器中使用Https(如地址栏中所示)调用此服务并将端口80绑定添加到IIS,但我发现它已更改为http,如下面的屏幕截图所示" svcutil.exe http://loadbalanceddomainname/servicename.svc"。为什么这个https被改为http?当我在端口80删除Binding时,为什么我的服务出现504错误?
虽然我在浏览器中得到了响应(在服务器中绑定了端口80),但当我尝试使用测试客户端调用操作时(通过在Visual Studio中添加服务引用并创建代理),我收到错误404 - 没有这样的终点。 WCF跟踪日志也显示以下错误:
无法查找频道以接收传入消息。要么是 找不到端点或SOAP操作。
我也注意到我在IIS中绑定的证书不是我在浏览器中看到的,在上面的屏幕截图中 - 当我查看证书详细信息时。这是来自F5或介于两者之间的不同证书吗?
答案 0 :(得分:0)
我认为您正在处理此元数据问题。当客户端尝试通过https访问服务时,由于soap:address location,它仍会被重定向到http。
https://blogs.msdn.microsoft.com/dsnotes/2014/10/03/ssl-offloading-in-load-balancer-scenario/