如何修复IO异常?

时间:2014-12-31 08:52:41

标签: c# asp.net

我有一个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;
            }

        }

1 个答案:

答案 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。这打开了它只供阅读。