C# 反序列化IPAddress时出现内存不足异常
当我尝试从MyConfig.xml反序列化时,在C# 反序列化IPAddress时出现内存不足异常,c#,xml,xml-serialization,C#,Xml,Xml Serialization,当我尝试从MyConfig.xml反序列化时,在 System.Net.IPAddress.InternalParse(String ipString, Boolean tryParse) System.Net.IPAddress.Parse(String ipString) MyNamespace.IPRange.ReadXml(XmlReader reader) IPRange.cs public class IPRange : IXmlSerializable { public
System.Net.IPAddress.InternalParse(String ipString, Boolean tryParse)
System.Net.IPAddress.Parse(String ipString)
MyNamespace.IPRange.ReadXml(XmlReader reader)
IPRange.cs
public class IPRange : IXmlSerializable
{
public IPRange () { }
public IPAddress StartIP { get; set; }
public IPAddress EndIP { get; set; }
public XmlSchema GetSchema()
{
throw new NotImplementedException();
}
public void ReadXml(XmlReader reader)
{
this.StartIP = IPAddress.Parse(reader.GetAttribute("StartIP"));
this.EndIP = IPAddress.Parse(reader.GetAttribute("EndIP"));
}
public void WriteXml(XmlWriter writer)
{
writer.WriteAttributeString("StartIP", this.StartIP.ToString());
writer.WriteAttributeString("EndIP", this.EndIP.ToString());
}
}
public class MyConfig
{
[XmlArrayItem("IPRange")]
public List<IPRange> DMZ { get; set; }
}
MyConfig.cs
public class IPRange : IXmlSerializable
{
public IPRange () { }
public IPAddress StartIP { get; set; }
public IPAddress EndIP { get; set; }
public XmlSchema GetSchema()
{
throw new NotImplementedException();
}
public void ReadXml(XmlReader reader)
{
this.StartIP = IPAddress.Parse(reader.GetAttribute("StartIP"));
this.EndIP = IPAddress.Parse(reader.GetAttribute("EndIP"));
}
public void WriteXml(XmlWriter writer)
{
writer.WriteAttributeString("StartIP", this.StartIP.ToString());
writer.WriteAttributeString("EndIP", this.EndIP.ToString());
}
}
public class MyConfig
{
[XmlArrayItem("IPRange")]
public List<IPRange> DMZ { get; set; }
}
公共类MyConfig
{
[XmlArrayItem(“IPRange”)]
公共列表DMZ{get;set;}
}
MyConfig.xml
<?xml version="1.0" encoding="utf-8" ?>
<MyConfig>
<DMZ>
<IPRange StartIP="{some start ip}" EndIP="{some end ip}" />
<IPRange StartIP="{some start ip}" EndIP="{some end ip}" />
</DMZ>
</MyConfig>
我不知道我做错了什么。
请帮我解决这个问题
谢谢 我通过在函数末尾编写reader.Read()来修复它
public void ReadXml(XmlReader reader)
{
this.StartIP = IPAddress.Parse(reader.GetAttribute("StartIP"));
this.EndIP = IPAddress.Parse(reader.GetAttribute("EndIP"));
reader.Read();
}
我通过在函数末尾编写reader.Read()来修复它
public void ReadXml(XmlReader reader)
{
this.StartIP = IPAddress.Parse(reader.GetAttribute("StartIP"));
this.EndIP = IPAddress.Parse(reader.GetAttribute("EndIP"));
reader.Read();
}
听起来很有趣。你试过调试吗?
reader.GetAttribute(“StartIP”)
和reader.GetAttribute(“StartIP”)
是否返回合理的值?您是否尝试过多次,每次都在代码中的同一点看到错误?如果你在有冒犯性的呼叫之前中断了,你的内存使用情况如何?听起来很有趣。你试过调试吗?reader.GetAttribute(“StartIP”)
和reader.GetAttribute(“StartIP”)
是否返回合理的值?您是否尝试过多次,每次都在代码中的同一点看到错误?如果你在有冒犯性的呼叫之前中断,你的内存使用情况如何?