none
好像是并发的问题,但不知该怎么解决。 RRS feed

  • 问题

  • 我有一个页面需要使用两个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());
    }
    

    做最好的自己
    2009年9月3日 12:03

答案

全部回复