1

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 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());
    }
}

MyConfig.cs

public class MyConfig
{
    [XmlArrayItem("IPRange")]
    public List<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>

何が間違っているのかわかりません。この問題で私を助けてください。

ありがとう!

4

1 に答える 1

1

関数の最後にreader.Read()を書くことで修正しました...

public void ReadXml(XmlReader reader)
{
    this.StartIP = IPAddress.Parse(reader.GetAttribute("StartIP"));
    this.EndIP = IPAddress.Parse(reader.GetAttribute("EndIP"));

    reader.Read();
}
于 2013-04-20T08:52:35.880 に答える