【发布时间】:2012-01-10 21:42:20
【问题描述】:
我有一个使用类层次结构的 WCF 服务。基类 BaseService 只有基本信息(看图),而我继承的类有扩展信息。 Service 的属性之一是枚举。 BaseService 设置了 DataContract 属性,其中 KnownType 属性指向 Service。
其中一个服务返回一个 BaseService 列表,但是当我调用它时,我从 WCF 收到一个错误。我启用了日志,可以看到错误与未设置服务中的枚举有关。该服务不返回服务列表,而是返回 BaseService 列表,因此枚举不应该与上下文相关。似乎 WCF 正在尝试返回服务列表,即使该方法返回 BaseService 列表。
错误信息是: 尝试序列化参数http://tempuri.org/:GetShallowServiceResult 时出错。 InnerException 消息为“Enum value '0' 对于“MyService.ServiceTypeEnum”类型无效,无法序列化。
我不知道为什么会这样?
更新: 事实证明,我错过了将构造函数更改为使用 BaseService 类而不是继承的 Service 类。这说明 WebService 正在尝试序列化一些未设置的枚举。现在就像一个魅力。
【问题讨论】:
标签: wcf inheritance enums