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

问题描述

发布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

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

-
  -
    
   
-
 
 

结论

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

你可能感兴趣的:(内外网端口映射,WebServer无法使用)