2010-03-15 49 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