2012-08-03 94 views
11

假设当我只有wsdl文件时,如何创建代理类只是为了调用webservice的各种方法。 webservice如何关联所有类和它的属性&方法将暴露在我的c#应用程序中。任何人都可以帮助指导我。谢谢如何在web服务的情况下从WSDL生成代理类

+3

搜索'wsdl.exe'或'svcutil.exe' – 2012-08-03 18:37:49

+0

谢谢,但是我知道svcutil与WCF有多大关系,而不是web服务,但我不确定...放一些灯。 – Thomas 2012-08-03 18:40:46

+0

http://msdn.microsoft.com/en-us/library/7h3ystb6.aspx - note MS建议使用svcutil.exe而不是wsdl.exe,因为后者被视为传统技术。 – 2012-08-03 18:46:57

回答

6

您将需要使用ServiceModel Metadata Utility Tool或Visual Studio的Add Service Reference Dialog为了生成您想要与之通信的服务的客户端代理。生成的代理将提供抽象服务合约的类,并且您可以将您的客户端应用程序编程为与这些类进行交互。

+0

当我们添加web引用时,我们需要知道web服务的url,但在某些情况下,我看到第三方公司只提供wsdl文件。如果我从wsdl生成代理,那么代理如何与web服务交互。如何代理类知道web服务的实际url .....你可以讨论这个概念 – Thomas 2012-08-04 18:10:36

+0

任何web服务url如何存储在wsdl文件?在哪个标签中存储。请给我示例wsdl代码,以指出web服务url如何存储在wsdl文件中。谢谢 – Thomas 2012-08-04 18:11:51

+0

生成的代理没有关于服务端点的信息。当您实例化代理(或通道)时,您必须提供要使用的绑定和端点。这些信息也可以从配置文件中读取,上面提到的工具也会生成这些配置文件。见http://msdn.microsoft.com/en-us/library/ms576141.aspx – lesscode 2012-08-05 14:15:52

7

有一个实用工具,它与Visual Studio shipps(自2005年以来,我认为),称为wsdl.exe

它的命令行,并且可以用来生成代理。

+0

当我们添加Web引用,然后我们需要知道的webservice网址,但在某些情况下,我看到第三方公司只提供wsdl文件。如果我从wsdl生成代理,那么代理如何与web服务交互。如何代理类知道web服务的实际url .....你可以讨论这个概念 – Thomas 2012-08-04 17:56:17

+0

与通过引用添加代理相同。代理本身不包含有关Web服务位置的信息。 Web服务配置位于Web.config/app.config文件中。添加web参考生成客户端配置。当你自己添加代理时你必须自己添加配置。或者,您应该能够将URL作为客户端构造函数参数传递。 – Varius 2012-08-05 20:28:28

+0

哈哈,你是如此接近1000 – toddmo 2015-01-26 14:55:05

2

您可以使用命令行使用WSDL.exe工具。

即WseWsdl3 WSDLPath /out:MyProxyClass.cs

+0

语法是错误的,我想。当我们添加web引用时,我们需要知道web服务url,但在某些情况下,我看到第三方公司只提供wsdl文件。如果我从wsdl生成代理,那么代理如何与web服务交互。代理类如何知道web服务的实际URL .....你可以讨论这个概念。 – Thomas 2012-08-04 17:28:52

+0

WSDL确实有一个服务地址,如标记中所示。一旦你生成了一个代理,它应该在你的配置中生成一个配置值,它将确定用于交互的服务URL。 – VRK 2012-08-05 03:23:26

1

如果WseWsdl3.exe无法创建代理类,还有一种方式。

如果您可以在IIS中将您的服务作为常规的ASP.NET Web应用程序运行,那么它将创建临时的ASP.NET文件,其中可以很好地为您生成代理类。

您可以在文件夹中找到它:

C:\ WINDOWS \ Microsoft.NET \框架\ vMAJOR.MINOR.BUILD \临时ASP.NET文件\ YOUR_WEB_APP。 有一些随机名称的子文件夹,转到最近的一个,看起来像“App_WebReferences.XXXX.0.cs”。

相关问题