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

Fix*_*xer 1 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");
}
Run Code Online (Sandbox Code Playgroud)

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

... CONTENT</html>
Run Code Online (Sandbox Code Playgroud)

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

Mat*_*zer 5

你应该使用一个HttpContext.Response.Filter.

查看此MSDN文档页面:

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

总而言之,您需要创建一个包含原始实现的Stream实现HttpContext.Current.Response.Filter.

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

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