另一个进程asp.net使用的文件

时间:2012-07-23 12:30:09

标签: c# asp.net file file-upload asynchronous

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

这一直很好,但是在过去一周左右我遇到了问题。我得到了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);
        }

    }

2 个答案:

答案 0 :(得分:2)

我想更新文件内容的其他进程仍然锁定此文件。因此,您可能需要修复其代码,以确保在完成文件操作后释放对此文件的任何锁定/连接。

答案 1 :(得分:1)

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

另外请注意,Close()方法不会立即销毁对象,您也可以尝试使用Dispose()来确保从内存中清除引用。

希望它有所帮助!