2012-07-04 103 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%肯定。 –