2011-11-16 38 views
1

好吧,我不確定是否有重複,因爲我想不出有更好的方法來問這個問題。使用WCF服務類(.cs文件)而不是WCF

我有一個WCF服務(接口作爲契約,然後是一個實現接口的類 - 按照慣例)。它是託管的,每個人都可以看到該服務,並且我可以正常調用這些功能。

我們使用的是Visual Studio 2005(本例中爲C#)。

我試圖創建一個控制檯應用程序,它引用(而不是作爲Web引用)的WCF類,並調用方法。這是我可以直接調試它。我知道這是可能的(即:我幾乎肯定它可能),但每次我嘗試時,我的控制檯應用程序爆炸,因爲我沒有餵它的WCF必需品(端點等)。我傾向於大聲呼喊,「呃,呃:我試圖稱它爲一個.dll,而不是一個Web服務!」但我認爲這不會有多大幫助。

我收到的具體錯誤是「無法找到ServiceModel客戶端配置部分中引用合同'SafetyKleen.BizTalk.CryptoService.IRetrievalService'的默認端點元素,這可能是因爲沒有爲您的應用程序找到配置文件,或者因爲在客戶端元素中找不到匹配此合同的端點元素。「但是,我再一次特別試圖避免通過WCF來調用它。

任何建議,將不勝感激。

+0

我建議在您的控制檯應用程序中發佈一些代碼,在此實例化服務對象並調用其上的方法。你得到的錯誤表明你正在利用一些WCF組件,就像一個渠道工廠。 –

回答

3

應該有什麼阻止你創建一個控制檯應用程序,引用該服務合同(接口)和實現的程序集,實例化的實施和直接調用一些方法:

class Program 
{ 
    static void Main() 
    { 
     var service = new MyService1(); 
     var result = service.SomeMethod(new SomeDataContract 
     { 
      Prop1 = "value 1" 
     }); 
    } 
} 

沒有WCF參與電話。

但是出於調試目的,您只能使用WcfTestClient實用程序。

+0

WcfTestClient僅適用於.net 3.5或更高版本,我沒有它可用於VS2005(.net 3)。 – AllenG

+0

@AllenG,的確,WcfTestClient適用於.NET 3.5或更高版本。 –

+0

好吧,我通過刪除並重新添加引用來解決它的問題,直到它工作。但是,你的正確(我知道我不是那麼瘋狂),只能實例化這個類。 – AllenG

0

我做了WCF服務類的單元測試,將它們實例化爲普通類。 但是,我懷疑諸如OperationContext.Current之類的東西在這種情況下可能會導致問題。

0

錯誤可能來自app.config文件和/或服務引用。如果您嘗試使用與使用WCF服務相同的客戶端項目,那麼您可能在app.config中有一個服務引用和一堆WCF配置 - 或者您可能已清理了app.config,但沒有刪除服務參考?