C# 为什么XmlSerializer向根元素的结束标记添加垃圾值?

C# 为什么XmlSerializer向根元素的结束标记添加垃圾值?,c#,asp.net,xml-serialization,C#,Asp.net,Xml Serialization,我试图使用XmlSerializer将值写入xml值,下面是代码。该代码将在下拉列表的选择更改时调用。因此,它第一次工作正常,但在第二次选择更改事件中,它插入了垃圾值,如下图所示 protected void UpdateDefaultReasonConfig(object sender, EventArgs e) { string configFile = ConfigurationSettings.AppSettings["DefaultOutageReasonCon

我试图使用XmlSerializer将值写入xml值,下面是代码。该代码将在下拉列表的选择更改时调用。因此,它第一次工作正常,但在第二次选择更改事件中,它插入了垃圾值,如下图所示

protected void UpdateDefaultReasonConfig(object sender, EventArgs e)
    {
        string configFile = ConfigurationSettings.AppSettings["DefaultOutageReasonConfig"];

        DefaultOutageReason defaultOutageReason = new DefaultOutageReason();
        defaultOutageReason.OutageReason = this._defaultOutageReason.Text;
        XmlSerializer writer = new XmlSerializer(typeof(DefaultOutageReason));
        using (FileStream write = File.OpenWrite(configFile))
        {
            writer.Serialize(write, defaultOutageReason);
        }
    }
生成的xml是:

<?xml version="1.0"?>
<DefaultOutageReason xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <OutageReason>Storm Damage</OutageReason>
</DefaultOutageReason>eason>

风暴损害
伊森>

因此,请帮助我为什么它会将这个额外的值添加到根的结束标记。

您需要
文件。创建
而不是
文件。OpenWrite
,因为它会覆盖旧文件,如果新文件较短,您会看到这个垃圾。

您似乎写得太多了。它实际上并没有添加垃圾角色。这是因为以前创建的文件比当前文件长

使用
newfilestream(路径,FileMode.Truncate)以摆脱此问题