这似乎是一个相当普遍的问题,但我一直在搜索,到目前为止我还没有找到适合我的解决方案。
我在IIS上运行的WCF Web服务(.svc)可以正常工作。我已经为http和https设置了绑定。 http绑定不使用主机头,它完美地工作。之前没有https绑定,但是我添加了它们,但它仍然不起作用。
问题在于wsdl中的soap:address位置。
来自http(正确)的wsdl:
<wsdl:service name="UserService">
<wsdl:port name="BasicHttpBinding_UserServiceSoap" binding="tns:BasicHttpBinding_UserServiceSoap">
<soap:address location="http://xxx.net/test_ryan/webservices/xx/UserService.svc"/>
</wsdl:port>
</wsdl:service>
来自https的wsdl(不正确):
<wsdl:service name="UserService">
<wsdl:port name="BasicHttpBinding_UserServiceSoap" binding="tns:BasicHttpBinding_UserServiceSoap">
<soap:address location="http://colo01/test_ryan/webservices/xx/UserService.svc"/>
</wsdl:port>
</wsdl:service>
我确实有ssl证书可用,所以当我在浏览器中访问xxx.net时,我不会收到任何警告。
当我尝试在https中从SoapUI运行服务时,出现404错误。完全相同的请求在http版本中工作正常。
我已经将主机标头添加到iis7 https绑定中(我已经尝试过www.xxx.net而只是xxx.net)。然后运行iisreset。当我用
验证时cscript.exe /nologo %systemdrive%\inetpub\adminscripts\adsutil.vbs get /w3svc/1/SecureBindings
我看到“:443:www.xxx.net”
该服务正在使用标准http,而web.config中没有任何“services”或“bindings”元素。行为看起来像
<behaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
<useRequestHeadersForMetadataAddress />
</behavior>
</serviceBehaviors>
</behaviors>
我尝试了许多绑定/服务的排列,没有任何运气。包括带有security =“none”和security =“TransportWithMessageCredential”的绑定。我也尝试设置无效的端点地址和serviceMetadata.httpsGetUrl,它可以防止加载svc / wsdl。
任何建议都将非常感谢!谢谢。