如何在关闭HTTPModule中的html标记之前注入HTML

时间:2011-12-30 10:18:32

标签: c# asp.net httpmodule

我正在尝试在响应中注入一些额外的标记,但它没有按预期输出。

例如,将输出以下代码:

... </html>CONTENT

private void OnEndRequest(Object source, EventArgs e)
{
    HttpApplication application = (HttpApplication)source;
    HttpContext context = application.Context;
    context.Response.Write("CONTENT");
}

但我希望在关闭html标签之前输出内容

... CONTENT</html>

关于如何实现这一目标的任何想法?

1 个答案:

答案 0 :(得分:5)

您应该使用HttpContext.Response.Filter

查看此MSDN文档页面:

这篇非常古老的文章也应该澄清这一点:

总结一下,您需要创建一个Stream实现,包含HttpContext.Current.Response.Filter中的原始实现。

为了在文档的某些部分中注入HTML,您只需要将字节转换为字符串并使用String.IndexOf或正则表达式,如果您在整个代码中,则需要将其删除线。

之后,只需连接,修改或替换获取的字符串,并将其放入原始默认响应过滤器中的包装流中。