我在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);
}
}
答案 0 :(得分:2)
我想更新文件内容的其他进程仍然锁定此文件。因此,您可能需要修复其代码,以确保在完成文件操作后释放对此文件的任何锁定/连接。
答案 1 :(得分:1)
问题可能是在fs.Close()调用之前抛出异常。 尝试使用try-catch-fianlly并将fs.Close()放在finally块中。
另外请注意,Close()方法不会立即销毁对象,您也可以尝试使用Dispose()来确保从内存中清除引用。
希望它有所帮助!