1

我在 asp.net mvc 中开发了一个网站,该网站从 xml 文件中读取以显示一些数据。该文件由我的后端进程定期更新,该进程构建此 xml 文件并最终通过 ftp 将其上传到我的网络主机。

这一直工作正常,但在上周左右我遇到了一个问题。我得到了 asp.net 异常“文件正在被另一个进程使用”。我不知道这可能是什么,我觉得这很奇怪。几个月来我什至没有更改我的代码中的任何内容。

您将在下面找到我用于序列化 xml 文件的典型方法:

    public static IEnumerable<FStreamObject> GetStreams()
    {

        using (FileStream fs = new FileStream(HttpRuntime.AppDomainAppPath+"/ff.xml", FileMode.Open))
        {
            XmlReader ffXML = XmlReader.Create(fs);

            XmlSerializer ser = new XmlSerializer(typeof(FXmlModel));

            var sList = (FXmlModel)ser.Deserialize(ffXML);

            fs.Close();

            return sList.FSObjectList.OrderByDescending(x => x.Cash);
        }

    }
4

2 回答 2

2

我猜另一个更新文件内容的进程仍然锁定了这个文件。因此,您可能需要修复其中的代码,以确保在完成文件操作后释放到该文件的任何锁/连接。

于 2012-07-23T12:36:07.343 回答
1

问题可能是在 fs.Close() 调用之前引发了异常。尝试使用 try-catch-fianlly 并将 fs.Close() 放在 finally 块中。

还要记住 Close() 方法不会立即销毁对象,您也可以尝试使用 Dispose() 以确保从内存中清除引用。

希望能帮助到你!

于 2012-07-23T12:50:43.720 回答