Dav*_*pos 5 apache iis web-services asmx
我在IIS上有一个ASP.NET Web服务,它正在使用端口8080.在端口80上我有Apache,它将一些网站重定向到IIS.
在这种情况下,我可以访问Web服务页面(http://example.com/service/),它提供了所有可用的方法.但是,当我尝试调用一个方法时,它会转到这样一个网页:http://example.com:8080/services/Service1.asmx / Method .当然,公共访问无法看到任何结果,端口8080被阻止且无法打开.
在内部,Web服务在端口8080上工作,但是需要对端口80执行公共请求.
任何人都知道如何解决我的问题?
PS:在Windows Server 2008下使用IIS 7和Apache 2.2
最可能的原因是您的 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 中的替代方法是使用 a动态SoapExtensionReflector修改地址:location
我过去曾成功地使用过上述方法。
或者,如果客户端基于 .NET,您可以覆盖服务的基本 URL:
WebClientProtocol.Url 属性(MSDN 库)
| 归档时间: | 
 | 
| 查看次数: | 4849 次 | 
| 最近记录: |