从 WCF 测试客户端向 WCF 服务发送请求时,所有枚举的计算结果为 0

All Enums evaluates to 0 when sending a request to a WCF service from a WCF test client

我有一个非常奇怪的问题,我正在从 WCF 测试客户端发送请求,我想测试我的 soap 服务,所有枚举的计算结果为零。枚举看起来像这样:

[DataContract]
[Flags]
public enum Gender
{
    [EnumMember]
    Female= 1,
    [EnumMember]
    Male= 2
}

经过大量谷歌搜索后,我了解到添加属性 [DataContract]、[Flags] 和 [EnumMember] 应该可以解决问题,但仍然没有成功

错误消息:

System.ServiceModel.CommunicationException: '尝试序列化参数 http://tempuri.org/:methodCallRequest 时出错。 InnerException 消息是“枚举值‘0’对于类型 'Gender' 无效并且无法序列化。如果类型具有 DataContractAttribute 属性,请确保存在必要的枚举值并用 EnumMemberAttribute 属性标记。'。有关详细信息,请参阅 InnerException。'

内部异常:

SerializationException:枚举值“0”对于类型 'Gender' 无效,无法序列化。如果类型具有 DataContractAttribute 属性,请确保存在必要的枚举值并用 EnumMemberAttribute 属性标记。

在性别枚举 属性 上添加属性 [DataMember(IsRequired = true)] 并在 object header 上添加 [DataContract] 属性解决了问题