1

我的工作流服务中的变量有一个特殊问题。它是来自 REST 服务的数据合约数组,ContactContract[]. 当这个数组为空时,一切都很好,工作流程继续正确。但是,如果数组中有任何项目在我的活动之外发生堆栈溢出,不幸的是我无法确定具体位置。

因此,之前DataContractSerializer在对象图中存在循环时看到过类似的情况,我编写了一个单元测试来尝试它。测试失败,但出现以下异常:

System.Xaml.XamlObjectReaderException:无法序列化类型“System.Runtime.Serialization.ExtensionDataObject”。验证该类型是公共的并且具有默认构造函数或实例描述符。

和测试:

[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 回答