我有一个XML文件,我正在阅读该文件。当我注销该网站并重新登录该网站时,它显示以下异常
该进程无法访问文件'.. \ Uploads \ demo \ transaction.xml',因为它正由另一个进程使用。 基于这个XML文件,我正在做一些数据验证。任何人都可以帮我解决这个问题吗?
private IEnumerable<XElement> GetChildElements(string strFileName)
{
try
{
if (HttpContext.Current.Session["Filepath"] == null)
return null;
var xDocument = XDocument.Load(streamXml);
IEnumerable<XElement> xElements = null;
if (xDocument.Root != null)
xElements = xDocument.Root.Elements()
.Where(e => e.Attribute("name").Value.ToLower().Equals(strCsvFileName.ToLower()))
.SelectMany(c => c.Elements());
return xElements;
}
catch (Exception ex)
{
Logging.ILogging.Error(ex);
throw ex;
}
}
答案 0 :(得分:2)
(根据评论编辑)
var streamXml = File.OpenRead(HttpContext.Current.Server.MapPath(strXmlFilePath));
...
var xDocument = XDocument.Load(streamXml);
是的,那是一个问题;你需要:
XDocument xDocument;
using(var streamXml = File.OpenRead(
HttpContext.Current.Server.MapPath(strXmlFilePath)))
{
xDocument = XDocument.Load(streamXml);
}
或更简单:
var xDocument = XDocument.Load(HttpContext.Current.Server.MapPath(strXmlFilePath));
否则,你还没有清理相关内容。
但是在尝试更新XML文件时,它显示错误消息Stream不支持写入。
是的,你说OpenRead
。这打开了它只供阅读。