【整理,本文内容来源于网络及本人实践】
Webservice一般是先开发服务,发布wsdl后由客户端调用,但也有先有标准的wsdl文件,反过来开发服务的情况。为了保证开发的服务和wsdl一样,可以把往wsdl生成服务端代码,实现其中方法,再发布服务。
VS提供了一个命令,可以将wsdl生成服务端或客户端代码。打开:开始-所有程序-Microsoft Visual Studio2008-Visual Studio Tools-Visual Studio 2008命令提示
执行 wsdl /?,可以看到wsdl的说明,默认生成语言是CS,也可以设置VB、JS、CPP等;默认生成是客户端代码,也可生成服务端的抽象类或接口。
如wsdl d:\Hello.wsdl /server /out:d:\HelloServer.cs
生成Hello.wsdl服务端代码的抽象类,稍加修改并实现其中内容即可发布。
我遇到的问题
在开发过程中,我拿到的wsdl是由java用endpoint发布的,我重新生成C#服务端代码再发布服务,得到的wsdl比不完全一样
本以为也没什么事,然而java那边调用我的时候,说我的wsdl里<service>节点的<port>里没有name=HelloHttpSoap11EndPoint的端口。
我注意了一下,标准的wsdl里有HelloHttpSoap11EndPoint(soap11)、HelloHttpSoap12EndPoint(soap12)和HelloHttpEndPoint,而我的wsdl里只有Hello