WF4的序列化问题

时间:2011-07-13 21:52:08

标签: c# workflow-foundation-4 datacontract xaml-serialization

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

所以,在对象图中存在循环时,在DataContractSerializer之前看过类似的东西,我写了一个单元测试来试试。测试失败,但有以下例外:

  

System.Xaml.XamlObjectReaderException:无法序列化类型   ' System.Runtime.Serialization.ExtensionDataObject&#39 ;.验证   type是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以更好地支持版本控制。

这不是我预期的堆栈溢出,但我敢打赌它是相关的。

是否有人遇到过这些问题或有任何建议?

1 个答案:

答案 0 :(得分:0)

好的我现在觉得自己像个白痴。事实证明,这不是工作流崩溃,而是WcfTestClient b / c它无法弄清楚如何显示联系合同。