Как внедрить HTML перед закрытием HTML-тега в HTTPModule - PullRequest
1 голос
/ 30 декабря 2011

Я пытаюсь добавить некоторую дополнительную разметку в ответ, но она не выводится, как ожидалось.

Например, следующий код выведет:

... </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 Ответ

5 голосов
/ 30 декабря 2011

Вы должны использовать HttpContext.Response.Filter.

Проверьте эту страницу документации MSDN:

Эта очень старая статья также должна прояснить это:

Подводя итог, вам нужно создать реализацию Stream, заключающую в себе оригинальную реализацию, входящую в HttpContext.Current.Response.Filter.

Чтобы внедрить HTML в некоторую часть документа, вам просто нужно преобразовать байты в строку и использовать String.IndexOf или регулярное выражение, которое вы хотите определить, если вы находитесь во всей строке кода.

После этого просто объедините, измените или замените полученную строку и поместите ее в упакованный поток, поступающий в исходный фильтр ответов по умолчанию.

...