1

ワークフロー サービスの変数に特有の問題があります。これは、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バージョン管理をサポートするために実装されているためです。

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

これらの問題のいずれかに遭遇した人はいますか、またはアドバイスはありますか?

4

1 に答える 1

0

わかりました、私は今、ばかのように感じます。ワークフローのクラッシュではなく、WcfTestClient b/c が連絡先コントラクトを表示する方法を理解できなかったことが判明しました。

于 2011-07-14T15:59:28.717 に答える