从WSDL生成C#的Web服务代理

5
我正在使用Fedex webservice。他们没有提供像http://hostServer/WebserviceRoot/WebServiceName.asmx这样的webservice URL,而是提供了一个.wsdl文件。

请指导我如何从.wsdl文件生成web服务代理类并在我的项目中添加web服务引用。

我知道如何从wsdl生成代理,例如:

wsdl /l:cs /protocol:SOAP /o:MyProxy.cs mywsdl.wsdl

但是我想知道它是做什么的。它可能会创建代理类,但我该如何将 Web 服务引用添加到我的项目中呢?

我认为你应该直接从那个WSDL创建一个客户端,而不是先创建一个服务器。而且这个命令似乎正在创建一个客户端。你应该快完成了 (-: - H H
3个回答

11

如果您手动创建代理类,则只需将它们添加到项目中。在 Visual Studio 中,使用 Add Web Reference 机制自动化此过程并添加类型。

wsdl 可执行文件将读取您下载的 WSDL 文件(“mywsdl.wsdl”),并生成代理代码,例如在 C# 语言中(在“MyProxy.cs”中)。您可以将“MyProxy.cs”添加到项目中,并在项目中实例化生成的客户端。


4
请使用Visual Studio命令提示符中的wsdl.exe命令。
例如:
WSDL c:/myfile.wsdl

描述这个程序的功能。 - Demodave

1
通常有两种处理Web服务的方式。一种是像你提到的那样,使用Web服务URL ../service.asmx。这样,您只需要在Visual Studio项目中使用“添加Web引用”,就可以始终连接到实时Web服务。这样更容易,缺点是如果Web服务决定更改某些内容,则需要同时更改您的引用。重新编译项目并重新部署。
当您保留wsdl文件的本地副本时,如果它们在实时WSDL中引入了强制字段,则只要基础代码库仍然与其配合工作,您仍然受到保护。如果您自己生成proxy.cs类,就像接受的答案一样,它就像通过Visual Studio添加它一样工作,只是您必须手动将类添加到项目中。
此外,我相信您可以从WSDL文件中的获取整个Web服务URL。通常,如果您的意图是跟上任何更改,使用本地WSDL文件不是一个好习惯。我怀疑您会遇到这个问题,因为它是一个联邦快递Web服务,可能经受住了时间的考验。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接