如何在HTTPModule中关闭HTML标签之前注入HTML

本文关键字:HTML 标签 注入 HTTPModule | 更新日期: 2023-09-27 18:19:15

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

例如,下面的代码将输出:
... </html>CONTENT
private void OnEndRequest(Object source, EventArgs e)
{
    HttpApplication application = (HttpApplication)source;
    HttpContext context = application.Context;
    context.Response.Write("CONTENT");
}

但是我想在结束html标签

之前输出内容
... CONTENT</html>

对如何实现这一点有什么想法吗?

如何在HTTPModule中关闭HTML标签之前注入HTML

您应该使用HttpContext.Response.Filter

查看此MSDN文档页面:

  • http://msdn.microsoft.com/en-us/library/system.web.httpresponse.filter.aspx

这篇很老的文章也应该澄清这一点:

  • http://ondotnet.com/pub/a/dotnet/2003/10/20/httpfilter.html

总而言之,你需要创建一个流实现来包装原来的HttpContext.Current.Response.Filter

为了在文档的某些部分注入HTML,您只需要将字节转换为字符串并使用String.IndexOf或正则表达式来确定您是否在整个代码行中。

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