使用HttpModules修改发送给客户端的响应

时间:2011-04-20 07:41:41

标签: asp.net

我有两个内容相似的制作网站。其中一个网站需要被搜索引擎索引,另一个不应该。有没有办法在使用HttpModule给客户端的响应中添加内容?

就我而言,我需要将HttpModule添加到发送到该特定网络上模块处于活动状态的响应中。

1 个答案:

答案 0 :(得分:2)

您可能希望处理应用程序的PreRequestHandlerExecute事件,因为它在IHttpHandler处理页面本身之前运行:

public class NoIndexHttpModule : IHttpModule
{
  public void Dispose() { }

  public void Init(HttpApplication context)
  {
    context.PreRequestHandlerExecute += AttachNoIndexMeta;
  }

  private void AttachNoIndexMeta(object sender, EventArgs e)
  {
    var page = HttpContext.Current.CurrentHandler as Page;
    if (page != null && page.Header != null)
    {
      page.Header.Controls.Add(new LiteralControl("<meta name=\"robots\" value=\"noindex, follow\" />"));
    }
  }
}

另一种方法是创建自己的Stream实现并通过Response.Filters应用它,但这确实比较棘手。