2012-08-03 93 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」。

相關問題