此处调用报错:
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;
}