我正在使用Fedex webservice。他们没有提供像http://hostServer/WebserviceRoot/WebServiceName.asmx这样的网络服务网址。相反,他们提供了.wsdl
文件。
请指导我从.wsdl
文件生成Web服务代理类,并向我的项目添加Web服务引用。
我知道从wsdl
生成代理
wsdl /l:cs /protocol:SOAP /o:MyProxy.cs mywsdl.wsdl
但我想知道它的作用。它可能会创建代理类,但如何将Web服务引用添加到我的项目中?
答案 0 :(得分:11)
如果要手动创建代理类,则只需将它们添加到项目中。 Visual Studio中的Add Web Reference
机制用于自动执行此过程并添加类型。
wsdl
可执行文件将读取您下载的WSDL文件(“mywsdl.wsdl”),并在您的示例中使用C#语言(在“MyProxy.cs”中)生成代理代码。您可以将“MyProxy.cs”添加到项目中,并开始在项目中实例化生成的客户端的实例。
答案 1 :(得分:5)
使用visual studio命令提示符中的wsdl.exe命令。
例如:
WSDL c:/myfile.wsdl
答案 2 :(得分:1)
通常有两种方法来处理Web服务。一个,就像你提到的,使用Web服务URL ../service.asmx。这样,您只需在visual studio项目中使用“添加Web引用”,即可始终连接到实时Web服务。这更容易,缺点是如果Web服务决定更改某些内容,您还需要更改引用。重新编译项目并重新部署。
当您保留wsdl文件的本地副本时,如果它们在实时WSDL中引入了必填字段,只要底层代码库仍然可以使用它,您仍然受到保护。如果你自己生成proxy.cs类,就像在接受的答案中一样,它就像通过visual studio添加它一样,除了你必须手动将类添加到项目中。
此外,我相信您可以从WSDL文件中的<soap:address location="http://testsite.com/test.asmx" />
获取整个Web服务URL。通常,如果您打算跟上任何更改,那么使用本地WSDL文件并不是一个好习惯。我怀疑你会遇到这个问题,因为它是一个联邦快递网络服务,可能已经经历了时间的考验。