2011-05-12 62 views
6

我在開始使用.NET 4.0中的WCF時遇到了問題。這是我的情況:在C#中使用WCF和.NET 4.0實現SOAP客戶端

我已經在PHP中創建了一個小型SOAP服務器。我有一個C#項目,我想在其中連接到此服務器並啓動SOAP通信。

我的問題是,我不知道如何在C#中做到這一點。我無法找到正確的WCF介紹。有辦法做到這一點。但是我無法找到正確的類和引用來添加到我的C#項目中。任何教程如何在C#中實現這一點?我搜查了很多,沒有找到任何幫助我的東西。

我想在運行時從我的SOAP服務器加載WSDL,發出SOAP請求,檢索答案並完成。但我可以從哪裏開始?有關WCF的MSDN網站只會讓我更加困惑。

編輯:在運行時可能不需要獲取WSDL文件。所以這是不再需要的。
我用svcutil創建類並將其嵌入到我的項目中。我還沒能夠測試它,因爲我在MySQL數據庫中遇到了一些問題(它正在運行,可以從mysql命令行工具或mysqladmin訪問,但我無法通過任何其他程序連接到它) 。只要知道它是否有效,我會立即報告。

編輯2:我遵循了Kevs的方法,最終結果非常好。我最後的問題是,我在DLL中使用了服務類。我也需要使用DLL的程序中的app.config。我這樣做後,結果很好。

+0

這不是你通常在.NET中做的事情。通常,您將在開發時導入WSDL,並通過添加服務引用來生成客戶端代理。爲什麼在運行時需要獲取WSDL? – Thorarin

+0

在做了更多的研究後,我認爲這並不是真的有必要。我想我不需要它,並且這種方式不容易。 – Skalli

回答

8

要做到這一點的最快方法是在引用下的客戶端項目中右鍵單擊「添加服務引用」。點對話在WSDL的位置,然後點擊開始:

enter image description here

我所用的.NET服務參考的風格,你需要與你的任何PHP SOAP服務用於更換網址公開其WSDL。

這樣做會生成一個客戶端代理,您可以實例化與您的Web服務進行通信。

訪問該服務,那麼你可以這樣做(雖然你的具體實施將是不一樣的):

MyService.MyWebServiceSoapClient ws = new MyService.MyWebServiceSoapClient(); 
string result ws.DoThing(); 

要特別注意代理類名的SoapClient一部分,這是加到代理代碼生成器的soap服務名稱。

代理生成器還將在您的web.configapp.config文件中創建所有必要的配置。

+0

雖然我同意這是使用服務的最快方法,但OP特別要求在運行時加載WSDL。 – Thorarin

+2

@thorarin - 雖然這可能是真的,但他也可能認爲每次需要使用端點時都會動態構建soap類(有點像後期VB6/VBScript SOAP SDK樣式),可能並不知道他可以只生成一次代理。 – Kev

+0

確實,我正在考慮運行時代。但我花更多時間在研究上,我想我會隨着進口而去。另一個說明:「添加服務引用」在我的情況下不起作用。我不得不通過「高級」對話框和添加Web引用。它說.NET 2.0兼容。對我來說看起來並不理想。 – Skalli