2011-07-06 137 views
5

我正在使用Fedex Web服務。他們沒有提供像http://hostServer/WebserviceRoot/WebServiceName.asmx這樣的網絡服務URL。相反,他們提供了一個.wsdl文件。從WSDL C生成Web服務代理#

請指導我從.wsdl文件生成Web服務代理類,並向我的項目添加Web服務引用。

我知道生成wsdl

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

的代理,但我想知道它做什麼。它可能會創建代理類,但是如何將Web服務引用添加到我的項目中?

+0

我認爲你應該直接從WSDL創建一個_client_,而不是首先創建一個Server。而這個命令似乎在創建一個客戶端。你應該差不多完成了( - : –

回答

11

如果您要手動創建代理類,則只需將它們添加到項目中即可。在Visual Studio中的Add Web Reference機制用於自動完成此過程並添加類型。

wsdl可執行文件將讀取已下載的WSDL文件(「mywsdl.wsdl」)並生成代理代碼你在C#語言中的例子(在「MyProxy.cs」中)。您可以將「MyProxy.cs」添加到項目中,並開始在項目中實例化生成的客戶端實例。

5

使用Visual Studio命令提示符下的wsdl.exe命令。

例如:

WSDL c:/myfile.wsdl 
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文件並不是一個好習慣。我懷疑你會遇到這個問題,因爲它是一個fedex web服務,可能已經經歷了時間的考驗。