繁体   English   中英

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

[英]File used by another process asp.net

我在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);
        }

    }

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

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

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

希望能帮助到你!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM