【问题标题】:The request failed with an empty response. Calling ASMX service behind Loadbalancer请求失败,响应为空。在 Loadbalancer 后面调用 ASMX 服务
【发布时间】:2016-04-19 06:09:06
【问题描述】:

我有一个在Loadbalancer 中启用了HTTPS 的网络服务。外部 URL 如下所示:

https://www.domain.com/webservice.asmx?wsdl

。

从负载均衡器禁用此 Web 服务的 HTTP,所有 HTTP 请求都由负载均衡器转换为 HTTPS。

当我尝试使用 SoapUI 或从应用程序使用它并运行时,它会抛出错误请求失败,响应为空。

现在,当我检查 WSDL 中的 SoapAddress 时,它是 HTTP 而不是 HTTPS。我全部改成HTTPS。即使那样我也遇到了同样的错误。

经过大量研究,我尝试使用 Fiddler 捕获流量,发现有些奇怪。当从applicaiton或SoapUI调用方法时,协议为HTTP,Fiddler结果为302。这一定是失败的原因。

现在,如何才能让它作为 HTTPS 正常运行?为什么会这样 即使从浏览器无法调用它,也会转换为 HTTP 使用 HTTP,我已经使用 https://xyz...

【问题讨论】:

    标签: c# web-services ssl soap wsdl


    【解决方案1】:

    您需要确保客户端使用的绑定设置了安全模式="Transport"(并且客户端绑定与服务器绑定匹配),例如:

    <binding name="yourClientSecureBinding">
        <security mode="Transport">
            <transport clientCredentialType="None"/>
        </security>
    </binding>
    

    并且客户端确实访问了 Web 服务的 https:// 地址:

    <client>
        <endpoint bindingConfiguration="yourClientSecureBinding" 
                  address="https://..."  
                  ... />
    </client>
    

    您没有提供任何代码,所以初学者可以看看这些帖子:这里(Microsoft 开发人员网络 - 使用匿名客户端的传输安全)和这里(带有 BasicHTTPBinding 的 Https)。

    基于Link

    【讨论】:

    • 我知道这篇文章已经快一年了,但我才发现这个。我觉得您的回复与网络服务无关。我认为您正在考虑 WCF。
    猜你喜欢
    • 2012-01-28
    • 2016-12-29
    • 2019-08-07
    • 1970-01-01
    • 1970-01-01
    • 2019-01-16
    • 2010-12-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多