传递WCF数据成员失败
本文关键字:失败 数据成员 WCF 传递 | 更新日期: 2023-09-27 18:18:35
问题:WCF数据合约类中的部分(但不是全部)数据成员无法正常传递。
[ServiceContract]
public interface ICheckList
{
[OperationContract]
int UpsertManager(ManagerEntity newObj);
}
[DataContract]
[Serializable]
public class ManagerEntity
{
[DataMember] public bool TrainingComplete{get;set;}
[DataMember] public int IsPosted{get;set;}
[DataMember] public DateTime TrainingDate{get;set;}
[DataMember] public string Comments{get;set;}
}
客户端代码:
BRTWSLChecklist.ManagerEntity newModel = new BRTWSLChecklist.ManagerEntity();
newModel.TrainingComplete = model.HasTrainingDate;
newModel.Comments = model.Comments;
newModel.IsPosted = 1;
newModel.TrainingDate = DateTime.Today;
ChecklistClient.UpsertManager(newModel);
WCF的一面:public int UpsertManager(ManagerEntity newObj)
{
bool t = newObj.TrainingComplete; //always false
DateTime x = newObj.TrainingDate; //always equal to 1/1/0001
string c = newObj.Comments; //no problems here
int d = newObj.IsPosted; //no problems here
}
你知道为什么四分之二是可以的,但日期和时间是失败的吗??
您的客户端代码有属性TrainingCompleteSpecified
和TrainingDateSpecified
吗?
如果是这样:当你为这些属性指定了一些值时,你必须将这些属性设置为true…
对于某些类型的属性,WCF无法区分您没有指定任何值,或者您指定的值也可能看起来像"什么都没有"。因此,对于这些类型的属性,WCF客户端运行时将bool (property)Specified
属性添加到客户端代码中;如果你想传递一个值给服务器,这些(property)Specified
属性必须设置为true
-否则,你的值设置将被忽略/在服务器端看不到。