我已经在以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.5的Windows 8。
它似乎类似于: http://forums.lhotka.net/forums/t/11585.aspx
这是可能的,还是我需要将.NET 4.5推向Azure?
答案 0 :(得分:0)
如果为Async实现(在WCF 4.5中是新的)返回Task,则.NET 4.0不支持此功能。 .NET 4.0支持基于IAsyncResult的异步。
如果将任务作为数据(而不是Async)返回,则以下情况适用:
您的服务是否返回任务?这是不对的,因为任务是“正在完成的工作” - 而不是“数据”本身。也许你在进程中测试过程,因此它有效吗?
System.Threading.Tasks.Task也存在于.NET 4中。正如错误所说,写入服务的方式,它需要序列化任务,这实际上是不可能的。您应该查看服务合同和再次使用的数据类型。