WCF/ASP.NETでホストされるWebサービスがあります。サービスコントラクトのデータ型はXSD.exeで生成された型を使用するため、XmlSerialization
属性で装飾されています。パラメータの使用を含め、SvcUtilを使用してクライアントを作成しました/ser:XmlSerializer
。長年働いています。
ビルドスクリプトをアップグレードして、VS2012とv8.0A Windows / .NET SDK NETFX 4.0ツールバージョンのSvcUtil.exe(v 4.0.30319.17929)を使用するようにしました。
クライアント(VS2012および新しい8.0ASvcUtilで構築された)が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にパラメータを渡していないことに注意してください/async
。また、.NET SDK 8.0A(v 4.0.30319.17929)のSvcUtilヘルプは、デフォルトがとの間に組み込みの切断があることを示していることにも注意してgenerate synchronous and task-based asynchronous method signatures.
ください。System.Threading.Task
XmlSerializer
DataContractSerialization
ランタイムが意図したときに使用しているとどういうわけか考えないようにする方法についての提案はありますXmlSerialization
か?