0

我们有一个 WCF / ASP.NET 托管的 Web 服务。服务契约中的数据类型使用 XSD.exe 生成的类型,因此使用XmlSerialization属性进行修饰。我们使用 SvcUtil 为它创建了一个客户端,包括使用/ser:XmlSerializer参数。工作了很多年。

我们刚刚升级了构建脚本以使用 VS 2012 和 v 8.0A Windows/.NET SDK NETFX 4.0 工具版本的 SvcUtil.exe (v 4.0.30319.17929)。

当我们的客户端(使用 VS 2012 和新的 8.0A SvcUtil 构建)尝试调用 WCF 服务时,我们现在看到一条奇怪的错误消息:

Type 'System.Threading.Tasks.Task1[MyNamespace.MyClient.MyDataStructure]' 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.

这个错误阻止了我们的应用程序能够调用 WCF 服务,我们被卡住了。

我注意到我们没有将参数传递给 SvcUtil for /async. 我还注意到 .NET SDK 8.0A (v 4.0.30319.17929) 的 SvcUtil 帮助表明默认设置为generate synchronous and task-based asynchronous method signatures. Is there some built-in disconnect between System.Threading.Taskand XmlSerializer?

关于我们如何防止运行时以某种方式认为我们正在使用的DataContractSerialization建议XmlSerialization

4

1 回答 1

1

从微软那里得到答案,发布在这里

简而言之,/syncOnly如果您打算使用 .NET 4.5 构建SvcUtil但针对 .NET 4 运行时,则需要这样做。

于 2013-02-21T17:51:16.523 回答