我正在开发一个IIS模块,当发出网页请求时,它将查看传递回浏览器的数据,并用批准的关键字替换某些关键字。我认识到有多种方法可以执行此操作,但是出于我们的目的,IIS模块将最好地工作。

如何读取发送回浏览器的数据流成字符串,以便可以根据需要转换关键字?

任何帮助将不胜感激!

这是代码:

namespace MyNamespace
{
    class MyModule : IHttpModule
    {
        private HttpContext _current = null;

        #region IHttpModule Members

        public void Dispose()
        {
            throw new Exception("Not implemented");
        }

        public void Init(HttpApplication context)
        {
            _current = context.Context;

            context.PreRequestHandlerExecute += new EventHandler(context_PreRequestHandlerExecute);
        }

        #endregion

        public void context_PreRequestHandlerExecute(Object source, EventArgs e)
        {
            HttpApplication app = (HttpApplication)source;
            HttpRequest request = app.Context.Request;
        }
}

最佳答案

有两种方法:


使用响应过滤器


http://www.4guysfromrolla.com/articles/120308-1.aspx


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\" />"));
    }
  }


}

关于c# - 如何通过IIS模块获取网页的响应文本?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7065237/

10-10 06:45