[英]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.