由于服务器是放在局域网里的,通过端口映射放开80端口,现在把web service部署在这个服务器上,客户得到的wsdl文件里面的服务器地址是局域网地址,请问在什么地方配置?

解决方案 »

  1.   

    不是映射的问题,web网站都是可以访问的,问题是web service的wsdl提供的地址是局域网的地址
      

  2.   

    是这样的,局域网内部的机器要想开web服务,默认都是80端口,但实际出口只有一个,也就是路由。
    路由会开很多不同的端口,自动对应到局域网内部机器使用的端口。
    使用路由器映射端口,实际上就是将路由对外端口固定给局域网内部某台机器的某个端口。
    另外,要外网访问,最好需要一个动态域名,反弹端口的,比如花生壳、gnHost之类。
      

  3.   

    已经说了不是路由的问题,和端口没有关系
    可以访问asmx文件,但是用vs加不了服务,wsdl文件里面的描述的地址是局域网地址,所以不能访问
      

  4.   

    WSDL是Web Service 描述语言,它是一种标准的服务描述语言,这个东西服务器上并不使用,在生成客户端代理类时会根据此文件生成。同理你在客户端调用的时候应该使用代理类来访问。你可以使用wsdl.exe这个工具来生成wsdl和代理类,这种方式可以提供给其他程序使用,比如JAVA。此工具的具体使用说明请看MSDN帮助,各种参数描述非常详细!
      

  5.   

    问题就出在wsdl文件上,wsdl是vs自动生成的
      <wsdl:service name="xxxxxxService">
        <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">xxxxxxxxxx</wsdl:documentation>
        <wsdl:port name="xxxxxxServiceSoap" binding="tns:xxxxxxServiceSoap">
          <soap:address location="http://192.168.51.8/Services/xxxxxxService.asmx" />
        </wsdl:port>
        <wsdl:port name="xxxxxxServiceSoap12" binding="tns:xxxxxxServiceSoap12">
          <soap12:address location="http://192.168.51.8/Services/xxxxxxService.asmx" />
        </wsdl:port>
      </wsdl:service>
    服务通过端口映射暴露,客户通过公网地址访问,现在客户可以访问asmx,但是由于asmx?wsdl文件描述的地址是局域网地址,如红字显示的一般,客户无法将服务添加到他们的项目中,要怎么改成公网的地址呢?
      

  6.   


    wsdl文件和disco都是vs自动生成的,我不知道怎么改,或者可否我自定义这两个文件?