ワークフロー サービスの変数に特有の問題があります。これは、REST サービスからのデータ コントラクトの配列ですContactContract[]
。この配列が空の場合、すべてがうまくいき、ワークフローは正しく続行されます。ただし、配列にアイテムがある場合、アクティビティの外でスタック オーバーフローが発生するため、残念ながら特定の場所を特定することはできません。
そのため、オブジェクト グラフに when サイクルが存在する場合にこのようなものを見たことがDataContractSerializer
ありますが、それを試すために単体テストを作成しました。テストは次の例外で失敗します。
System.Xaml.XamlObjectReaderException: 型 'System.Runtime.Serialization.ExtensionDataObject' をシリアル化できません。型が public であり、既定のコンストラクターまたはインスタンス記述子のいずれかがあることを確認してください。
そしてテスト:
[TestMethod]
public void ContactArraySerialize()
{
var ser = new DataContractSerializer(typeof(ContactContract[]));
var reader = new StringReader(Strings.SERIALIZED_CONTACT_LIST);
var xmlReader = XmlReader.Create(reader);
var list = ser.ReadObject(xmlReader) as ContactContract[];
var str = XamlServices.Save(list);
}
(連絡先リストのxmlを追加しますが、それは巨大です)
これは、コントラクトがIExtensibleDataObject
バージョン管理をサポートするために実装されているためです。
これは私が予想していたスタック オーバーフローではありませんが、関連していると思います。
これらの問題のいずれかに遭遇した人はいますか、またはアドバイスはありますか?