1

我已将 WCF 服务部署到以 Web 角色运行的 Azure。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

这可能吗,还是我需要在 Azure 上安装 .NET 4.5?

4

1 回答 1

0

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

如果任务作为数据返回(而不是异步),则以下适用:

您的服务是否返回任务?这是不对的,因为任务是一些“正在完成的工作”——而不是“数据”本身。也许您在进程中测试了该过程,因此它起作用了?

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

于 2012-09-27T04:14:20.350 回答