2012-07-04 3 views
0

В моем сервисе у меня есть все методы async, и как я использую C# 4.0, O не может использовать новый CTP, поэтому я реализовал все методы Begin/end.wcf async with task and messageContract, почему параметры неверны?

Когда мне нужно вызвать метод от клиента, я использую следующий способ:

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

Это работает, по крайней мере, когда CustomClass является DataContract.

Теперь мне нужно использовать MessageDataContract, и когда я использую тот же путь, я получаю сообщение об ошибке, указывающее, что число параметров неверно или тип. В этом случае у меня есть то же самое, методы Begin/end, messageContract как параметры и null как состояние.

Я проверил договор о сокращении и реализации, и я не вижу в этом ничего плохого, и сервис правильно компилируется.

Спасибо.

+0

Вы говорите, что используете C# 4.0 и не можете использовать новый CTP, но вы используете 'await'. Как это? –

ответ

2

Я рекомендую вам использовать TaskWsdlImportExtension для создания асинхронных WCF-прокси-серверов Task на стороне клиента. VS2012 делает это по умолчанию, но вы have to set it up yourself на VS2010 + AsyncCTP.

+0

- хороший вариант для производственных приложений? Если теперь я использую этот путь, а позже я хочу использовать VS2012, мое приложение будет совместимо? Я имею в виду, что иногда я знаю, что эти DLL - это предварительная версия, а в окончательной версии есть некоторые изменения. Благодарю. –

+0

Это определенно хорошо для производства. Я * считаю, что этот компонент полностью совместим с VS2012, но я не слышал ничего официального из команд WCF/Async. Вы можете спросить их, хотите ли вы быть на 100% уверенными. –