2012-07-04 28 views
0

在我的服務中,我有所有的異步方法,以及我如何使用C#4.0,O不能使用新的CTP,所以我已經實現了所有的Begin/End方法。wcf異步與任務和messageContract,爲什麼參數不正確?

當我需要從客戶端調用一個方法,我用下面的方法:

Task<bool> myTask = Task<bool>.Factory.FromAsync(myProxy.BeginMethod1, miServicio.EndMethod1, CustomClass Parameters, null); 
    result = await myTask; 

這工作,至少,當CustomClass是DataContract。

現在,我需要使用MessageDataContract,並且當我使用相同的方式時,我得到一個錯誤,指出參數的數量不正確或類型。在這種情況下,我具有相同的開始/結束方法,messageContract作爲參數和null作爲狀態。

我已經檢查了srevice的合同和實現,並且我沒有看到任何錯誤,並且該服務編譯正確。

謝謝。

+0

你說你正在使用C#4.0並且不能使用新的CTP,但是你正在使用'await'。這怎麼樣? –

回答

2

我建議您使用TaskWsdlImportExtension在客戶端創建基於Task的異步WCF代理。默認情況下,VS2012會執行此操作,但您在VS2010 + AsyncCTP上執行have to set it up yourself

+0

是生產應用的不錯選擇?如果現在我使用這種方式,後來我想使用VS2012,我的應用程序將兼容?我的意思是,我知道有時候這個DLL是預覽版本,最終版本有一些變化。謝謝。 –

+0

這對生產絕對有好處。我*相信*這個組件與VS2012完全兼容,但我沒有聽說過WCF/Async團隊的任何官員。你可以問他們,如果你想100%肯定。 –