本文主要是介绍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; }
这篇关于XmlTextReader正由另一进程使用,因此该进程无法访问此文件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!