ASP.NET: внедрение контента во все потоки ответов - PullRequest
5 голосов
/ 16 ноября 2009

У нас есть hudrends ASPX и HTML-файлов на нашем сайте, и мы хотели бы добавить небольшой JavaScript в конце каждого файла. Если бы я захотел сделать это, используя HttpModule (пытаясь узнать что-то новое), это сделало бы - есть ли явные проблемы?

public void Init(HttpApplication context)
{
    context.BeginRequest += new EventHandler(context_BeginRequest);
}

void context_BeginRequest(object sender, EventArgs e)
{
    var context = HttpContext.Current;

    if (!isAspxOrHtmlFile(context.Request.Path)
    {
        return;
    }

    var javascript = ...

    using (var writer = new StringWriter())
    {
        context.Server.Execute(context.Request.Path, writer);
        context.Response.ContentType = "text/html";
        context.Response.Write(writer.GetStringBuilder().ToString() + javascript);
    }

    context.Response.End();
}

1 Ответ

4 голосов
/ 16 ноября 2009

Вы, вероятно, знаете, что простой способ сделать это - использовать статические пользовательские элементы управления в файле главной страницы вашего сайта, точно так же, как старые файлы SSI, верно?

О HttpModule вы должны знать о содержимом, которое не является HTML, но, кажется, вы уже удалили это с помощью isAspxOrHtmlFile(). Кажется, хорошо для меня.

...