C# Wcf将整数值设置为默认值
这是我的班级:C# Wcf将整数值设置为默认值,c#,wcf,C#,Wcf,这是我的班级: [DataContract] public class UserRepo { [DataMember] public int Id { get; set; } [DataMember] public string Name { get; set; } [DataMember] public string Surname { get; set; } [DataMember] public bool IsActi
[DataContract]
public class UserRepo
{
[DataMember]
public int Id { get; set; }
[DataMember]
public string Name { get; set; }
[DataMember]
public string Surname { get; set; }
[DataMember]
public bool IsActive { get; set; }
[DataMember]
public string Picture { get; set; }
[DataMember]
public string Password { get; set; }
[DataMember]
public int RoleId { get; set; }
[DataMember]
public string Email { get; set; }
[DataMember]
public string Title { get; set; }
[DataMember]
public int LoginCount { get; set; }
[DataMember]
public string RoleName { get; set; }
}
下面是我的wcf函数:
public ReponseResult UpdateUser(UserRepo _userRepo)
{
try
{
var userDb = UserDB.GetInstance();
var result = userDb.UpdateUser(_userRepo);
var respReponseResult = new ReponseResult();
respReponseResult.Message = "Success";
JavaScriptSerializer js = new JavaScriptSerializer();
var returnObject = new ReturnObject()
{
ObjectName = "User Update",
Result = new List<object>() { result, false }
};
string json = js.Serialize(returnObject);
respReponseResult.Result = json;
return respReponseResult;
}
catch (Exception e)
{
Console.WriteLine(e);
throw;
}
}
public reponseult UpdateUser(UserRepo\u UserRepo)
{
尝试
{
var userDb=userDb.GetInstance();
var result=userDb.UpdateUser(_userRepo);
var responseresult=新的responseresult();
responseResult.Message=“成功”;
JavaScriptSerializer js=新的JavaScriptSerializer();
var returnObject=新的returnObject()
{
ObjectName=“用户更新”,
结果=新列表(){Result,false}
};
字符串json=js.Serialize(returnObject);
respReponseResult.Result=json;
返回响应结果;
}
捕获(例外e)
{
控制台写入线(e);
投掷;
}
}
UserRepo对象的integer和bool props在发送到wcf后为0和false。我的错误在哪里?在调用WCF函数之前,您在哪里初始化UserRepo类?您是否检查UpdateUser方法中的单个值?我在项目中看到了这种情况。事实上,当代理从WSDL生成代码时,每个参数都将有一个自动生成的标志参数,例如,如果您的字段是
IsActive
,则自动生成的属性将是IsActiveSpecified
,请参见下文
[System.Xml.Serialization.XmlElementAttribute(Order=0)]
public System.bool IsActive{
get {
return this.isActiveField;
}
set {
this.isActiveField= value;
this.RaisePropertyChanged("IsActive");
}
}
[System.Xml.Serialization.XmlIgnoreAttribute()]
public bool IsActiveSpecified{
get {
return this.IsActiveSpecified;
}
set {
this.IsActiveSpecified= value;
this.RaisePropertyChanged("IsActiveSpecified");
}
}
因此,您应该设置IsActiveSpecified=true
,如果不设置,则传输的值为默认值
希望能解决你的问题