2009-06-03 49 views
22

我有一箇舊的WSDL文件,我想使用WCF與服務進行通信。如何使用WSDL文件創建WCF代理?

WSDL是從ASMX生成的(我想,但我不確定)。

與之溝通需要什麼步驟?

+1

它應該不會有什麼事情生成的WSDL。 – Cheeso 2009-06-03 16:16:34

回答

21

使用svcutil.exe的創建一個WCF代理來調用服務。詳情here

+1

好吧,我會放棄!在Visual Studio和Windows SDK中有一個文件wsdl.exe。我用它來生成代理類,這是否與svcutil.exe相同?一旦我生成代理文件,我應該如何使用這個生成代理? – Raha 2009-06-03 23:13:54

+5

不一樣。 svcutil.exe是一個爲WCF生成代理和存根(以及其他東西)的工具。對於ASMX,wsdl.exe的作用類似。截至2006年,WCF已經取代ASMX成爲.NET中首選的Web服務編程框架。所以,ASMX是舊的,WCF是新的。 – Cheeso 2009-06-04 13:40:09

25

右鍵單擊您的項目,然後選擇「添加服務參考」。指向WSDL。點擊「確定」。這應該是全部。

enter image description here

+3

我找不到「瀏覽」按鈕 - 必須在Visual Studio 2010中複製/粘貼wsdl文件的完整路徑。 – 2011-11-30 00:08:53

+0

我沒有引用「瀏覽」按鈕。你什麼意思? – 2011-11-30 00:15:55

+3

哦,我的意思是,我習慣於應用程序,需要你輸入一個文件名也有一個「瀏覽」或「...」按鈕,所以你可以選擇的位置。 Visual Studio UI有點誤導性,因爲它不會讓你這樣做 - 你必須手動複製/粘貼wsdl文件的位置。就像我知道這件事後那麼簡單,起初它肯定是令人困惑的。 – 2011-12-07 20:14:31

8

wsdl.exe是舊的Web服務(1.1)創建代理的方式。首先要嘗試的是「添加服務引用」,如前所述。這使用svcutil.exe來創建代理。如果您需要更多地控制代理的創建方式,可以在命令行中使用svcutil.exe和各種開關。

有了這說...我有舊的Web服務wsdls麻煩。特別是包含重載操作的舊版Apache AXIS Web服務。請參閱我的文章here瞭解完整的詳細信息。 (我的問題仍然沒有解決,我希望你不會遇到同樣的問題,但如果你這樣做,並找出它們,請回答我的問題。:)

+1

Web服務中沒有「重載」的概念。阿帕奇應該知道得更好,希望他們現在已經學會了。他們還習慣於做一些有趣的事情,例如發佈引用類似apachesoap的模式:XmlElement,然後不定義這些類型。如果您使用Apache代碼來使用該服務,可能運行得很好,但是否則不會。 – 2009-06-04 00:22:15

+0

感謝您的評論,約翰。顯然,WSDL 1.1允許重載? (請參閱http://webservices.xml.com/pub/a/ws/2003/01/08/randyray.html) 我提到的同一個服務包括一堆svcutil無法理解的故障類型。我花了一段時間纔開始工作,只有在我對代理代碼進行了重大編輯之後。 – 2009-06-04 00:57:57

相關問題