C# Web服务异常:";格式化程序在尝试反序列化消息时引发异常;
我有个问题。我得到这个错误,我知道这是由于int32的数字限制为2147483647。但我不知道为什么当所讨论的值(11位的电话号码)被定义为SQL数据库中的字符串、web服务中的字符串和web应用程序中的字符串时会出现此错误 我假设这与服务通过连接序列化和反序列化数据的方式有关,但我想知道是否有一种方法可以在反序列化发生时强制Number只使用字符串而不是解析它。或者甚至让它解析为int64 下面是错误异常。我删除了名称空间和服务名称。导致问题的是属性号 反序列化“”类型的对象时出错。ClientPhone[]。无法将值“07721545554”分析为类型“Int32” 这是服务和服务接口的代码C# Web服务异常:";格式化程序在尝试反序列化消息时引发异常;,c#,asp.net,web-services,entity-framework,parsing,C#,Asp.net,Web Services,Entity Framework,Parsing,我有个问题。我得到这个错误,我知道这是由于int32的数字限制为2147483647。但我不知道为什么当所讨论的值(11位的电话号码)被定义为SQL数据库中的字符串、web服务中的字符串和web应用程序中的字符串时会出现此错误 我假设这与服务通过连接序列化和反序列化数据的方式有关,但我想知道是否有一种方法可以在反序列化发生时强制Number只使用字符串而不是解析它。或者甚至让它解析为int64 下面是错误异常。我删除了名称空间和服务名称。导致问题的是属性号 反序列化“”类型的对象时出错。Clie
[DataContract]
public class ClientPhone
{
[DataMember]
public int? ClientNumberID { get; set; }
[DataMember]
public int? RefID { get; set; }
[DataMember]
public string Number { get; set; }
[DataMember]
public string NumberType { get; set; }
[DataMember]
public bool? PrimaryNumber { get; set; }
}
public partial class ClientNumberEntity
{
public int ClientNumbersID { get; set; }
public Nullable<int> RefID { get; set; }
public string ClientNumberType { get; set; }
public string ClientNumber { get; set; }
public Nullable<bool> PrimaryNumber { get; set; }
public virtual ClientDataEntity ClientData { get; set; }
}
public List<ClientPhone> GetClientsPhoneByReference(int _reference)
{
OurDatabaseEntities context = new OurDatabaseEntities();
var phoneEntity = (from c in context.ClientNumberEntities
where c.RefID == _reference
select c).ToList();
if (phoneEntity != null)
{
return TranslateClientPhoneEntityToPhoneNumberList(phoneEntity);
}
else
throw new Exception("Unable to get phone data");
}
private List<ClientPhone> TranslateClientPhoneEntityToPhoneNumberList(List<ClientNumberEntity> numberEntities)
{
List<ClientPhone> phoneList = new List<ClientPhone>();
foreach (ClientNumberEntity numberEntity in numberEntities)
{
ClientPhone phoneListMember = new ClientPhone();
phoneListMember.ClientNumberID = numberEntity.ClientNumbersID;
phoneListMember.RefID = numberEntity.RefID;
phoneListMember.Number = numberEntity.ClientNumber;
phoneListMember.NumberType = numberEntity.ClientNumberType;
phoneListMember.PrimaryNumber = numberEntity.PrimaryNumber;
phoneList.Add(phoneListMember);
}
return phoneList;
}
[DataContract]
公共类客户端电话
{
[数据成员]
public int?clientnumberrid{get;set;}
[数据成员]
公共int?RefID{get;set;}
[数据成员]
公共字符串编号{get;set;}
[数据成员]
公共字符串NumberType{get;set;}
[数据成员]
公共bool?PrimaryNumber{get;set;}
}
公共部分类ClientNumberEntity
{
public int ClientNumbersID{get;set;}
公共可为空的RefID{get;set;}
公共字符串ClientNumberType{get;set;}
公共字符串ClientNumber{get;set;}
公共可为空的PrimaryNumber{get;set;}
公共虚拟ClientDataEntity ClientData{get;set;}
}
公共列表GetClientsPhoneByReference(int\u引用)
{
OurDatabaseEntities上下文=新建OurDatabaseEntities();
var phoneEntity=(来自context.ClientNumberEntities中的c)
其中c.RefID==\u参考
选择c.ToList();
if(phoneEntity!=null)
{
返回TranslateClientPhoneEntityToPhoneNumberList(phoneEntity);
}
其他的
抛出新异常(“无法获取电话数据”);
}
私有列表TranslateClientPhoneEntityToPhoneNumberList(列表编号项)
{
List phoneList=新列表();
foreach(ClientNumberEntity中的numberEntity)
{
ClientPhone phoneListMember=新的ClientPhone();
phoneListMember.ClientNumberID=numberEntity.ClientNumberID;
phoneListMember.RefID=numberEntity.RefID;
phoneListMember.Number=numberEntity.ClientNumber;
phoneListMember.NumberType=numberEntity.ClientNumberType;
phoneListMember.PrimaryNumber=numberEntity.PrimaryNumber;
添加(phoneListMember);
}
返回电话列表;
}
任何关于解决方案的建议都将不胜感激!谢谢:)我找到了一个解决办法,尽管这对我来说更愚蠢 我没有意识到我的.EDMX实体图没有使用数据库中的新值进行更新(我必须手动删除实体并重新添加以强制更改) 在重新编译和更新服务引用之后,它工作了