我需要为某些交易保存发送到浏览器的完整且准确的 HTML(用于法律跟踪目的)。我怀疑我不确定是否有合适的钩子来执行此操作。有人知道吗?(顺便说一句,我知道还需要保存相关页面,如样式表和图像。)
Jessica Boxer
问问题
1720 次
5 回答
2
您可以创建一个http 模块并将输出流保存在某处。
您应该挂钩 PreSendRequestContent 事件...:
此事件在 ASP.NET 将响应内容发送到客户端之前引发。此事件允许我们在内容交付给客户端之前更改内容。我们可以使用此事件将所有页面中通用的内容添加到页面输出中。例如,常见的菜单、页眉或页脚。
于 2009-05-06T19:42:11.010 回答
2
您可以附加到PreSendRequestContent。此事件在内容发送之前引发,让您有机会修改它,或者在您的情况下保存它。
于 2009-05-06T19:43:25.560 回答
1
您可以实现响应过滤器。这是一个处理 ASP.NET 生成的 HTML 的好示例。除了将 HTML 发送到客户端之外,您还应该能够将 HTML 写入数据库或其他合适的存储。
这是将过滤器挂接到您的应用程序中的另一种 IMO 更简单的方法:
在 Global.asax 中,将以下代码放在 Application_BeginRequest 处理程序中:
void Application_BeginRequest(object sender, EventArgs e)
{
Response.Filter = new HtmlSavingFilter(Response.Filter);
}
于 2009-05-06T19:41:45.643 回答
1
我想您只想为某些页面保存呈现的 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);
}
}
真的很适合我。
于 2009-06-04T09:20:40.280 回答
0
也有专门为此目的制造的硬件设备。我们使用了一种名为“ PageVault ”的方法。
于 2009-05-06T20:10:07.557 回答