У меня есть служба WCF, которая использует иерархию классов. Базовый класс BaseService содержит только базовую информацию (рисунок), а унаследованный класс содержит расширенную информацию. Одним из свойств Сервиса является enum. BaseService имеет атрибут DataContract, установленный с атрибутом KnownType, указывающим на Service.
Одна из служб возвращает список BaseService, но когда я вызываю его, я получаю сообщение об ошибке от WCF. Я включил журнал и вижу, что ошибка связана с тем, что enum в Service не установлен. Служба возвращает не список Служб, а список BaseService, поэтому перечисление не должно соответствовать контексту. Кажется, что WCF пытается вернуть список Service, хотя метод возвращает список BaseService.
Сообщение об ошибке:
Произошла ошибка при попытке сериализации параметра http://tempuri.org/:GetShallowServiceResult. Сообщение InnerException «Enum value» 0 недопустимо для типа «MyService.ServiceTypeEnum» и не может быть сериализовано
Я не могу понять, почему это происходит?
UPDATE:
Оказалось, что я пропустил изменение конструктора на использование класса BaseService вместо унаследованного класса Service. То, что WebService пытался сериализовать какое-то перечисление, которое не было установлено. Теперь работает как шарм.