Сообщение об ошибке службы ошибок WCF с общими классами - PullRequest
1 голос
/ 23 марта 2010

Исходный код: http://code.google.com/p/sevenupdate/source/browse/#hg/Source/SevenUpdate.Base

SevenUpdate.Base.Sui нельзя использовать, поскольку он не соответствует импортированному DataContract.Необходимо исключить этот тип из ссылочных типов.

Теперь я попытался снять отметку с повторного использования ссылочных типов и смог компилировать свой проект.но при отправке коллекции с клиента она никогда не получалась или не могла быть десериализована на стороне сервера.

Мне действительно нужно, чтобы это работало.Любая помощь будет оценена, полный исходный код предоставляется Google Code.

Ответы [ 2 ]

0 голосов
/ 23 марта 2010

Что мне нужно сделать, чтобы воспроизвести эту ошибку? Первый бит (о сопоставлении контракта с данными) звучит так, как будто WCF вас не очень устраивает, что говорит о том, что у вас есть два похожих (но разных) контракта «в игре». Если вы повторно используете типы из общей библиотеки, это не должно быть проблемой.

Если вы делаете , исключая типы (и имея другую модель на клиенте и сервере), тогда он может получить bit tricker, так как "mex" не делает гарантировать, что позиции останутся нетронутыми (и, конечно, они регулярно меняются) - но вы можете исправить это в частичном классе, используя несколько [ProtoPartialMember(...)] против типа (не красиво, но это работает).

Но я подчеркиваю - главная проблема здесь, кажется, WCF; если что не устраивает то, что код не кодирует / не компилирует и т. д., то мои руки довольно сильно связаны (поскольку это не так далеко, как общение с protobuf-net).

0 голосов
/ 23 марта 2010

Я не загружал исходный код и не собирал его, но может ли быть так, что вам не хватает DataContract для этого класса?Класс Sui имеет свойство типа Sua как DataMember, поэтому его также необходимо сериализовать.Похоже, это в вашем коде в настоящее время

[ProtoContract, ]
[KnownType(typeof(ObservableCollection<LocaleString>))]
public class Sua
...