造成這種情況的最可能的原因是,您的Web服務生成WSDL將定義服務端點地址:
http://example.com:8080/service/service1.asmx
您可以提供單獨的靜態WSDL定義並修改以下部分以使用端口80:
<wsdl:service name="Service1">
<wsdl:port name="Service1Soap" binding="tns:Service1Soap">
<soap:address location="http://example.com:8080/service/service1.asmxx" />
</wsdl:port>
<wsdl:port name="Service1Soap12" binding="tns:Service1Soap12">
<soap12:address location="http://example.com:8080/service/service1.asmx" />
</wsdl:port>
</wsdl:service>
這應該會導致客戶端使用WSDL並生成存根代碼以綁定到正確的端口(這是充當代理的Apache服務器)。
另一種替代方法來強制正確的地址出現在所生成的WDSL是使用SoapExtensionReflector
來動態修改的地址location
:
Modify a Web Service's WSDL Using a SoapExtensionReflector
我已經使用了上述方法成功過去。
或者,你可以,如果客戶端是基於.NET,覆蓋基本URL的服務:
WebClientProtocol.Url Property (MSDN Library)
來源
2009-10-07 14:34:25
Kev
是您使用的URL來獲取客戶端上的WSDL? – Kev 2009-10-08 15:32:49