问题:WCF datacontract类中的一些但不是所有数据名称都无法正常传递。
[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
}
任何想法为什么四分之二都没问题,但是布尔和日期时间都失败了?
答案 0 :(得分:1)
您的客户端代码是否具有属性TrainingCompleteSpecified
和TrainingDateSpecified
?
如果是这样的话:当你为这些属性指定了一些值时,你必须将它们设置为真......
对于某些类型的属性,WCF无法区分您未指定任何值,或者您指定的值也看起来像“无”。因此,对于这些类型的属性,WCF客户端运行时将bool (property)Specified
属性添加到客户端代码中;如果要将值传递给服务器,则必须将这些(property)Specified
属性设置为为true
- 否则,您的值集将被忽略/在服务器端看不到