当通过外部主机名提供服务时,返回wsdl html而不是预期的响应信封

时间:2015-03-10 19:42:38

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

我在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)时,它会调用服务并返回WSDL HTML,如Web浏览器中所示,而不是预期的响应信封。

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

我远不是安全方面的专家,但我相信我们的防火墙正在处理安全性,然后通过http转发到UAT服务器。重定向和变体似乎在DNS的管理或设置方面有所改变。有没有人建议如何缩小范围以便调用外部服务?

2 个答案:

答案 0 :(得分:2)

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

  1. 在请求窗口中,点击网址上的下拉箭头。
  2. 选择[编辑当前..]
  3. 将http更改为https,然后再次尝试您的请求。

答案 1 :(得分:1)

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