【问题标题】:ASP.NET Save HTML Sent to BrowserASP.NET 保存发送到浏览器的 HTML
【发布时间】:2010-10-24 07:10:11
【问题描述】:

对于某些交易,我需要保存发送到浏览器的完整且准确的 HTML(用于法律跟踪目的)。我怀疑我不确定是否有合适的钩子来执行此操作。有人知道吗? (顺便说一句,我知道还需要保存相关页面,如样式表和图像。)

【问题讨论】:

    标签: asp.net savestate


    【解决方案1】:

    您可以创建一个http module 并将输出流保存在某处。

    您应该挂钩 PreSendRequestContent 事件...:

    在 ASP.NET 将响应内容发送到客户端之前引发此事件。此事件允许我们在内容交付给客户端之前更改内容。我们可以使用此事件将所有页面中通用的内容添加到页面输出中。例如,常见的菜单、页眉或页脚。

    【讨论】:

      【解决方案2】:

      您可以附加到PreSendRequestContent。此事件在内容发送之前引发,让您有机会修改它,或者在您的情况下保存它。

      P&P article on interception pattern

      【讨论】:

        【解决方案3】:

        您可以实现响应过滤器。这是处理 ASP.NET 生成的 HTML 的a nice sample。除了将 HTML 发送到客户端之外,您还应该能够将 HTML 写入数据库或其他合适的存储。

        这是一种替代且 IMO 更简单的方法,可将过滤器挂接到您的应用程序中:

        在 Global.asax 中,将以下代码放入 Application_BeginRequest 处理程序中:

        void Application_BeginRequest(object sender, EventArgs e)
        {
            Response.Filter = new HtmlSavingFilter(Response.Filter);
        }
        

        【讨论】:

          【解决方案4】:

          我想您只想为某些页面保存呈现的 html。如果是这样,我一直在我的一个应用程序中使用以下方法,该应用程序将呈现的 html 存储在磁盘上的某处以进行缓存。这个方法只是简单地覆盖了页面的渲染事件。

          protected override void Render(HtmlTextWriter writer)
          {
              using (HtmlTextWriter htmlwriter = new HtmlTextWriter(new System.IO.StringWriter()))
              {
                  base.Render(htmlwriter);
                  string html = htmlwriter.InnerWriter.ToString();
          
          
                  using (FileStream outputStream = new FileStream(@"C:\\temp.html", FileMode.OpenOrCreate))
                  {
                       outputStream.Write(html, 0, html.Length);
                       outputStream.Close();
                  }
          
                  writer.Write(html);
              }
          }
          

          真的很适合我。

          【讨论】:

            【解决方案5】:

            也有专门为此目的制造的硬件设备。我们使用了一种名为“PageVault”的方法。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2019-01-17
              • 2010-10-18
              • 1970-01-01
              • 2012-07-31
              • 2015-09-07
              • 2016-03-30
              • 2020-10-29
              • 1970-01-01
              相关资源
              最近更新 更多