2010-03-15 56 views
0

我的HttpHandler的樣子:緩存從一個HttpHandler的XML響應

public void ProcessRequest(HttpContext context) 
{ 
    context.Response.ContentType = "text/xml"; 


    XmlWriter writer = new XmlTextWriter(context.Response.OutputStream, Encoding.UTF8); 

    writer.WriteStartDocument(); 
    writer.WriteStartElement("ProductFeed"); 

    DataTable dt = GetStuff(); 

    for(...) 
    { 

    }   



    writer.WriteEndElement(); 
    writer.WriteEndDocument(); 


    writer.Flush(); 
    writer.Close();     

} 

我如何可以緩存我生成整個XML文檔?

或者我只能選擇緩存DataTable對象嗎?

回答

1

幾件事情:

  1. ,除非你還在使用.NET 1.1,不要使用XmlTextWriter。改爲使用XmlWriter.Create()
  2. 您對XmlWriter的使用需要位於using區塊中,否則在引發異常時會導致資源泄漏。這對於HttpHandler之類的東西來說非常糟糕,因爲它可以被多次調用。
  3. 您可以創建一個MemoryStream以根據您的XmlWriter。按照您現在的方式創建XML,但完成後,您可以通過將Position設置爲0來「倒回」MemoryStream。然後,您可以將流的內容寫入文件或任何您喜歡的位置。
+0

我想將它存儲在緩存中,而不是文件。你能幫我#3嗎?聽起來很有趣... – Blankman 2010-03-15 19:35:01

+0

哦,用XmlWriter我可以保存到一個stringbuilder,也許緩存? – Blankman 2010-03-15 19:35:48

+0

@Blankman:是的,緩存StringBuilder的結果是可行的。 – 2010-03-15 19:46:58