XmlTextReader正由另一进程使用,因此该进程无法访问此文件


此处调用报错:

    public void setMaxValueByXml(string Jym, string valueMax) 
    {
        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.Load(Server.MapPath("XMLData.xml"));
        XmlNodeList nodeList = xmlDoc.SelectSingleNode("body").ChildNodes;//获取body节点的所有子节点 

        foreach (XmlNode xn in nodeList)//遍历所有子节点 
        {
            XmlElement xe = (XmlElement)xn;//将子节点类型转换为XmlElement类型 
            if (xe.GetAttribute("genre") == Jym)//如果genre属性值为“TCM201” 
            {
                xe.SetAttribute("value", valueMax);//则修改该属性valueMax 
                break;
            }
        }
        xmlDoc.Save(Server.MapPath("XMLData.xml"));//保存。
    }




“/webSerZygxm”应用程序中的服务器错误。

文件“...rvices\webSerZygxm\XMLData.xml”正由另一进程使用,因此该进程无法访问此文件。 
  说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

 异常详细信息: System.IO.IOException: 文件“webservices\webSerZygxm\XMLData.xml”正由另一进程使用,因此该进程无法访问此文件。

源错误: 



行 463:            }
行 464:        }
行 465:        xmlDoc.Save(Server.MapPath("XMLData.xml"));//保存。
行 466:        
行 467:        setMaxValueByXml("TCM204", "1");
  

源文件:  ....ices\webSerZygxm\uploadInfo.aspx.cs    行:  465 

堆栈跟踪: 



[IOException: 文件“D:\Mwork\2016-11-04 中医馆项目webservices\webSerZygxm\XMLData.xml”正由另一进程使用,因此该进程无法访问此文件。]
   System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) +216
   System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost) +1326
   System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share) +65
   System.Xml.XmlDocument.Save(String filename) +129
   uploadInfo.Button1_Click(Object sender, EventArgs e) in ......\webSerZygxm\uploadInfo.aspx.cs:465
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +9696694
   System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +204
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +12
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +15
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +35
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1639

 




解决方案:
问题不是上面那段代码上.
而在与在此之前我
我先读取了这个XML 但是不是用这种方式如下代码
    public string getMaxValueByXml(string Jym) 
    {
        string resultXml = string.Empty;
        DataSet ds = new DataSet();
        XmlTextReader xmlTextReader = new XmlTextReader(Server.MapPath("XMLData.xml"));
        ds.ReadXml(xmlTextReader);
        if (ds.Tables[0].Rows.Count > 0)
        {
            for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
            {
                if (ds.Tables[0].Rows[i]["genre"].ToString() == Jym) 
                {
                    resultXml = ds.Tables[0].Rows[i]["value"].ToString();
                    break;
                }
            }
        }
        xmlTextReader.Close();//此处当时没写 才导致这个错误
        return resultXml;
    }






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值