C# Web服务异常:";格式化程序在尝试反序列化消息时引发异常;

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

我有个问题。我得到这个错误,我知道这是由于int32的数字限制为2147483647。但我不知道为什么当所讨论的值(11位的电话号码)被定义为SQL数据库中的字符串、web服务中的字符串和web应用程序中的字符串时会出现此错误

我假设这与服务通过连接序列化和反序列化数据的方式有关,但我想知道是否有一种方法可以在反序列化发生时强制Number只使用字符串而不是解析它。或者甚至让它解析为int64

下面是错误异常。我删除了名称空间和服务名称。导致问题的是属性号

反序列化“”类型的对象时出错。ClientPhone[]。无法将值“07721545554”分析为类型“Int32”

这是服务和服务接口的代码

[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实体图没有使用数据库中的新值进行更新(我必须手动删除实体并重新添加以强制更改)

在重新编译和更新服务引用之后,它工作了