调用Web服务后,Enum属性返回错误的值

时间:2013-06-04 19:12:56

标签: .net web-services

我在客户端和服务器上都有以下枚举:

enum AddressType
{
    fax,
    ...
    email,
    voice
}

当调用我的方法时,我返回一个将AddressType作为属性的对象,并将其显式设置为AddressType.voice

但是,在客户端上,收到的对象改为AddressType.fax ...

奇怪的是,其他一切看起来都很正常,其他枚举类型正常回归。

我检查过,客户端和服务器都具有完全相同的枚举定义,具有相同的顺序和xml命名空间。两者之间没有任何内容可以改变这个值。

我无法更改Web服务界面,因为Web服务本身是另一个的模型,而客户端是运行大量内容的遗留应用程序。

关于这里可能发生什么的任何想法?

感谢。

1 个答案:

答案 0 :(得分:0)

您使用的是哪种Web服务框架(WCF,ASPX等)?根据使用的序列化程序,您可能必须将属性明确标记为可序列化。

例如,使用默认的DataContractSerializer,您需要在要序列化的每个属性或字段上放置DataMember属性。听起来这个字段没有被序列化,因为它默认为零值。您可以通过更改分配给枚举的每个成员的值来测试这一点,方法是重新排列它们并让自动分配的值不同,或者在定义中明确指定每个枚举成员的值。如果值总是以零表示的值返回,那么(假设其他所有内容都与属性setter一样)该属性没有被序列化。