Проблема сериализации с WF4 - PullRequest
1 голос
/ 14 июля 2011

У меня есть специфическая проблема с переменной в моей службе рабочего процесса. Это массив данных, полученных от службы 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, чтобы немного улучшить поддержку версий.

Это не переполнение стека, которое я ожидал, но держу пари, что оно связано.

Кто-нибудь сталкивался с любой из этих проблем или у вас есть какой-либо совет?

1 Ответ

0 голосов
/ 14 июля 2011

Хорошо, теперь я чувствую себя идиотом. Оказывается, это был не сбой рабочего процесса, но WcfTestClient b / c не смог понять, как отобразить контракт контакта.

...