【问题标题】:When service through external host name returns wsdl html instead of the expected response envelope当通过外部主机名的服务返回 wsdl html 而不是预期的响应信封时
【发布时间】:2015-03-10 19:42:37
【问题描述】:

我在 UAT Web 服务器上部署了一个 IIS 托管的 WCF Web 服务。在 IIS 中,我在同一个 Web 服务上有站点绑定——一个用于内部访问(例如:uat-nodotsinternalonly),一个用于外部访问(例如:mysvc.uat.mydomain.com)。

当我使用 SoapUI 针对内部主机名 (http://uat-nodotsinternalonly/MyService.svc) 进行测试时,它会调用服务并按预期返回响应信封。

当我使用 SoapUI 针对外部主机名 (https://mysvc.uat.mydomain.com/MyService.svc) 进行测试时,它会调用服务并返回 Web 浏览器中显示的 WSDL HTML,而不是预期的响应信封。

我们需要通过防火墙进行暴露,以便与供应商进行测试。我们的外部客户端可以使用外部主机名浏览到我们的 Web 服务,并在他们的 Web 浏览器中接收回 WSDL,但是当他们调用它时,它会失败并出现 302 错误。

我远不是安全专家,但我相信我们的防火墙正在处理安全问题,然后通过 http 转发到 UAT 服务器。重定向和变体似乎在管理 DNS 的方式或 IIS 中的设置方面发生了一些变化。是否有人对如何缩小范围以使对外部服务的调用有效?

【问题讨论】:

    标签: asp.net web-services wcf iis wsdl


    【解决方案1】:

    我们也有一个 WCF 服务,它在 SoapUI 中返回 WSDL HTML,而不是调用方法时的预期响应。这是一个启用 SSL 的服务,在我们的案例中,解决方案是在创建请求之后编辑端点 URL,以便它使用 https 而不是 http。这是因为我们发现由于某种原因,即使您在创建请求时最初指定 https,它也会默认为 http。以下是在 SoapUI 中编辑端点 URL 的方法:

    1. 在请求窗口中,单击 URL 上的下拉箭头。
    2. 选择[编辑当前..]

    将 http 更改为 https,然后重试您的请求。

    【讨论】:

      【解决方案2】:

      客户端收到 302 错误的问题是因为客户端没有向我们的 Web 服务发送 SOAP 请求信封。客户端只是发送 XML。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-08-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-22
        • 1970-01-01
        • 2020-10-29
        相关资源
        最近更新 更多