在IIS中托管的WCF服务未通过HTTPS

时间:2016-09-27 02:06:34

标签: wcf iis https wcf-binding wcf-security

我开发了一个示例WCF服务,并在IIS 8.5,Windows Server 2012 R2中托管。请注意,此服务器已添加到F5负载平衡设置(我不知道此设置的详细信息),我应该使用URL https://loadbalanceddomainname/servicename.svc调用此服务。

在IIS中,我进行了以下配置:

  1. 创建了一个新网站
    1. 创建了一个自签名证书,主题名称为#34; loadbalanceddomainname"并导入个人商店。
    2. 将此证书绑定到端口443上的此网站,主机标头设置为" loadbalanceddomainname"。
  2. 使用此配置,当我尝试浏览网址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操作。

    Screenshot of the service

    我也注意到我在IIS中绑定的证书不是我在浏览器中看到的,在上面的屏幕截图中 - 当我查看证书详细信息时。这是来自F5或介于两者之间的不同证书吗?

1 个答案:

答案 0 :(得分:0)

我认为您正在处理此元数据问题。当客户端尝试通过https访问服务时,由于soap:address location,它仍会被重定向到http。

https://blogs.msdn.microsoft.com/dsnotes/2014/10/03/ssl-offloading-in-load-balancer-scenario/