1

私はワークフローサービスの変数に特有の問題があります。これは、RESTサービスのデータアクセス配列ContactContract[]の配列です。この配列が空の場合、すべてがうまくいき、ワークフローは正しく継続されます。しかし、配列内に項目があると、アクティビティの外側でスタックオーバーフローが発生するため、残念なことに特定の場所を特定できません。WF4でのシリアル化の問題

このように、オブジェクトグラフにサイクルが存在する場合、DataContractSerializerでこれまでのようなことを見て、私はそれを試してみるための単体テストを書いた。

System.Xaml.XamlObjectReaderException:テストは、次の例外で失敗タイプ をシリアル化できません 'System.Runtime.Serialization.ExtensionDataObject'。 タイプがpublicで、デフォルトのコンストラクタまたはインスタンス 記述子があることを確認します。私は契約が少し良くバージョン管理をサポートするためにIExtensibleDataObjectを実装しているため、これがある集まる

[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を追加しますが、それは巨大だ)

とテスト。

これは私が予想していたスタックオーバーフローではありませんが、関連していると思います。

これらの問題のいずれかが発生したことがありますか?

+0

ContactContractを一から確認するのは難しいです。 – Will

答えて

0

私は今や馬鹿のように感じます。 WcfTestClientワークフローがクラッシュするのではなく、コンタクトコントラクトを表示する方法を理解できなかったことが分かります。