从WSDL C#生成Web服务代理

时间:2011-07-06 17:57:48

标签: c# web-services wsdl

我正在使用Fedex webservice。他们没有提供像http://hostServer/WebserviceRoot/WebServiceName.asmx这样的网络服务网址。相反,他们提供了.wsdl文件。

请指导我从.wsdl文件生成Web服务代理类,并向我的项目添加Web服务引用。

我知道从wsdl生成代理

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

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

3 个答案:

答案 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文件并不是一个好习惯。我怀疑你会遇到这个问题,因为它是一个联邦快递网络服务,可能已经经历了时间的考验。