美文网首页
内外网端口映射,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