【发布时间】:2015-01-18 08:21:57
【问题描述】:
我有一个 WCF 服务,其枚举定义为 -
public enum Operator
{
Equals,
NotEquals,
GreatherThan,
LessThan
}
DataContract 声明为 -
[DataContract]
public class PropertyQuery
{
[DataMember]
public string PropertyName { get; set; }
[DataMember]
public Operator Operator { get; set; }
[DataMember]
public string PropertyValue { get; set; }
}
OperationContract 声明为 -
[OperationContract]
string GetClientData(string clientName, [Optional] PropertyQuery propertyQuery);
但是,当我使用 SoapUI 发送“GetClientData()”请求时,只为第一个参数“clientName”传递值并为“propertyQuery”参数留空 -
<tem:GetClientData>
<tem:clientName>AV</tem:clientName>
<!--Optional:-->
<tem:propertyQuery>
<!--Optional:-->
<wcf:Operator></wcf:Operator>
<!--Optional:-->
<wcf:PropertyName></wcf:PropertyName>
<!--Optional:-->
<wcf:PropertyValue></wcf:PropertyValue>
</tem:propertyQuery>
</tem:GetClientData>
我收到以下消息 -
无效的枚举值“”无法反序列化为类型“WCFService2.Operator”。如果类型具有 DataContractAttribute 属性,请确保存在必要的枚举值并使用 EnumMemberAttribute 属性进行标记。'。
我知道这个错误是有道理的。
但是如何将“propertyQuery”设为可选,从而将“Operator”设为可选并消除此错误。
请指导。
【问题讨论】:
-
留空是什么意思,能不能显示请求?
-
使用 SoapUI 请求更新
-
@iniki 你是怎么解决这个问题的?
标签: wcf