美文网首页
内外网端口映射,WebServer无法使用

内外网端口映射,WebServer无法使用

作者: 过桥 | 来源:发表于2015-09-11 14:27 被阅读1178次

问题描述

发布WebServices,通过端口映射,外网访问,能看WebServer测试页面,无法调用方法
内网地址:http://ZZZ.ZZZ.ZZZ.ZZZ/WebService/Service1.asmx
外网地址:http://XXX.XXX.XXX.XXX:7890/WebService/Service1.asmx(能看页面,无法调用方法)
系统环境:将内网IP ZZZ.ZZZ.ZZZ.ZZZ 端口80 映射到外网IP XXX.XXX.XXX.XXX 端口7890

解决方法

检查内网服务wsdl

在 web.config 文件中 system.web 标签之后加入

http://ZZZ.ZZZ.ZZZ.ZZZ/WebService/Service1.asmx?wsdl

-<wsdl:service name="Service1">
  -<wsdl:port name="Service1Soap" binding="tns:Service1Soap">
    <soap:address location="http://ZZZ.ZZZ.ZZZ.ZZZ/Service1.asmx"/>
   </wsdl:port>
-<wsdl:port name="Service1Soap12" binding="tns:Service1Soap12">
 <soap12:address location="http://ZZZ.ZZZ.ZZZ.ZZZ/Service1.asmx"/>
 </wsdl:port>
</wsdl:service>

对比外网服务wsdl

http://XXX.XXX.XXX.XXX:7890/WebService/Service1.asmx?wsdl

-<wsdl:service name="Service1">
  -<wsdl:port name="Service1Soap" binding="tns:Service1Soap">
    <soap:address location="http://XXX.XXX.XXX.XXX/Service1.asmx"/>
   </wsdl:port>
-<wsdl:port name="Service1Soap12" binding="tns:Service1Soap12">
 <soap12:address location="http://XXX.XXX.XXX.XXX/Service1.asmx"/>
 </wsdl:port>
</wsdl:service>

结论

能看到 WebServer 服务页面,即表示端口映射成功,对比 wsdl 可判断 soap:address 只是将 ip 做了转换。
故可采取如下办法:
方式一:将内网端口7890映射到外网端口7890(保持端口一致即可)
方式二:修改 WebServer 基类,将 soap:address 也作转换

相关文章

网友评论

      本文标题:内外网端口映射,WebServer无法使用

      本文链接:https://www.haomeiwen.com/subject/fvppcttx.html