2010-06-16 95 views
1

我創建了一個WCF服務,該服務工作正常,現在我想在客戶端應用程序中使用它。 使用SVCutil.exe我已生成該服務的代理和aap.settings並添加到客戶端sln(控制檯應用程序)如何從客戶端代理調用wcf方法

但問題是我無法訪問wcf方法。

 using System.ServiceModel; 

      namespace WCFClient 
        { 
        class Program 
        { 
        static void Main(string[] args) 
        { 

          Program p = new Program(); 
         p. // not getting the wcf methods 

        } 
        } 
        } 

我做錯了什麼?

回答

1

取決於您的服務如何被調用。當你創建服務引用時,你給它一個名稱空間名稱 - 在該名稱空間中,應該有一個名爲(yourservicename)的類Client - 將其中一個名稱命名並啓動。

您應該在服務參考下找到這些文件 - 如果您在解決方案資源管理器中單擊「顯示所有文件」按鈕,您會在服務參考下看到大量文件 - 其中一個應該是Reference.cs 。那些類是在那個文件中定義的 - 你可以檢查出來,它是一個普通的C#文件。

更新:,如果您使用svcutil.exe代理,根據與svcutil使用你的選擇,你也應該得到一個包含所需的類一個cs文件。

svcutil http://yourserver/yourservice 

將創建一個名爲(your WSDL name).cs並在運行此命令目錄中的output.config

您也可以爲C#文件指定一個文件名:

svcutil http://yourserver/yourservice /out:MyService.cs 

,然後你的文件名爲MyService.cs

SvcUtil有一個的選項 - 不能解釋他們全部給你,與他們玩耍,閱讀MSDN文檔。

再次,其中一個將被稱爲(your service name)Client。將* .cs文件包含在您的項目中,檢查名稱空間,創建.....Client類的實例並使用它來調用WCF服務。

示例:從URL

  • 抓取信息

    svcutil http://www.ecubicle.net/iptocountry.asmx?wsdl /out:IP2CountryClient.cs 
    
  • 包含了導致項目IP2CountryClient.cs;默認情況下,該文件中的類中沒有特別的命名空間,所以他們是全局可見

  • 實例化客戶端類iptocountrySoapClient

    iptocountrySoapClient client = new iptocountrySoapClient(); 
    
  • 呼叫方法 - 例如這一次在這裏:當我使用svcutil.exe的,inthat情況下如何訪問WCF方法創建代理

    string result = client.FindCountryAsString("82.82.82.82"); 
    
+0

沒得到ü..my問題。 如果我做一個添加服務參考工作很好,但svcutil.exe生成代理的情況下的步驟是什麼 – Cloud2010 2010-06-16 15:49:49

+0

@ Cloud2010:爲svcutil.exe添加更新 – 2010-06-16 16:15:56

+0

是的,它現在工作。謝謝marc_s – Cloud2010 2010-06-16 17:18:52