使用异步任务<t>接口</t>将WCF服务部署到Azure(.NET 4)

时间:2012-09-27 03:46:52

标签: wcf asynchronous azure task

我已经在以Web角色运行的Azure中部署了WCF服务。 Azure是库存标准(因此运行.NET 4.0)。我收到以下错误:

Type 'System.Threading.Tasks.Task' cannot be serialized. Consider marking it with the DataContractAttribute attribute, and marking all of its members you want serialized with the DataMemberAttribute attribute.  If the type is a collection, consider marking it with the CollectionDataContractAttribute.  See the Microsoft .NET Framework documentation for other supported types. 
  • 我的类库面向.NET 4
  • 我引用了异步定位包

它通过模拟器在我的本地计算机上运行。我的本地计算机是带有.NET 4.5的Windows 8。

它似乎类似于: http://forums.lhotka.net/forums/t/11585.aspx

这是可能的,还是我需要将.NET 4.5推向Azure?

1 个答案:

答案 0 :(得分:0)

如果为Async实现(在WCF 4.5中是新的)返回Task,则.NET 4.0不支持此功能。 .NET 4.0支持基于IAsyncResult的异步。

如果将任务作为数据(而不是Async)返回,则以下情况适用:

您的服务是否返回任务?这是不对的,因为任务是“正在完成的工作” - 而不是“数据”本身。也许你在进程中测试过程,因此它有效吗?

System.Threading.Tasks.Task也存在于.NET 4中。正如错误所说,写入服务的方式,它需要序列化任务,这实际上是不可能的。您应该查看服务合同和再次使用的数据类型。