积极答复者
好像是并发的问题,但不知该怎么解决。

问题
-
我有一个页面需要使用两个XMLHttpRequest同时获取数据。但是只有一个能正常获取,另一个获取时总是报错:“编写器已关闭,或处于错误状态。”
应该是说XmlWriter已关闭,可writer又再次被使用。个人觉得应该是竞争访问造成的。
我试着在using下写了个lock,但还是不可以。以下XmlhttpRequest请求的处理代码
public void ProcessRequest(HttpContext context) { int catalogID; int pageNumber; int articleID; string action = context.Request.Params["atcion"]; StringBuilder responseStr = new StringBuilder(); XmlWriterSettings setting = new XmlWriterSettings(); setting.OmitXmlDeclaration = true; using (XmlWriter writer = XmlWriter.Create(responseStr, setting)) { writer.WriteStartElement("Results"); try { #region switch statement switch (action) { case "GetAllCatalogs": this.WriteAllArticleCatalogsXML(writer); // 已修正 break; case "GetArticlesByCatalogID": catalogID = Convert.ToInt32(context.Request.Params["CatalogID"]); pageNumber = Convert.ToInt32(context.Request.Params["PageNumber"]); this.WriteArticlesXMLByCatalogID(catalogID, pageNumber, writer); break; default: break; } #endregion } catch (Exception e) { writer.WriteStartElement("Exception"); writer.WriteValue(e.Message); writer.WriteEndElement(); } writer.WriteEndElement(); writer.Flush(); } context.Response.ContentType = "text/xml"; context.Response.Write(responseStr.ToString()); }
做最好的自己
答案
-
你需要两个XmlhttpRequest 就写两个处理页面 避免这个问题了
- 已标记为答案 NineTyNine_LiPei 2009年9月4日 12:01
-
您好,没看到代码中竞争的资源。是在WriteAllArticleCatalogsXML或WriteArticlesXMLByCatalogID里?
如果有加一个lock即可。- 已标记为答案 NineTyNine_LiPei 2009年9月4日 12:01
全部回复
-
你需要两个XmlhttpRequest 就写两个处理页面 避免这个问题了
- 已标记为答案 NineTyNine_LiPei 2009年9月4日 12:01
-
您好,没看到代码中竞争的资源。是在WriteAllArticleCatalogsXML或WriteArticlesXMLByCatalogID里?
如果有加一个lock即可。- 已标记为答案 NineTyNine_LiPei 2009年9月4日 12:01