最近在使用vs2005(.net2.0)调用一个wcf发布的WebService时出现一个问题,服务中的整数字段,在客户端代理类自动生成了两个对应的字段,如下:
服务端字段:
public int Count { get; set; }
代理类中生成的字段:
/// <remarks/>
public int Count {
get {
return this.countField;
}
set {
this.countField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlIgnoreAttribute()]
public bool CountSpecified {
get {
return this.countFieldSpecified;
}
set {
this.countFieldSpecified = value;
}
}
在调用服务时,如果CountSpecified字段不设置(默认为false), 则Count字段设置的值将无效,服务端接收到的值总是为0。
google之后,找到了解决方案,在服务端字段的DataMember标记中添加IsRequired=true:
[DataMember(IsRequired = true)]
public int Count { get; set; }
再刷新客户端的引用,就没有CountSpecified字段了。
:-)