2011-08-15 11 views
2

私は、Webページのリクエストが行われたときにブラウザに渡されるデータを調べ、特定のキーワードを承認済みのキーワードに置き換えるIISモジュールを作成しています。これを行うには複数の方法があることがわかっていますが、私たちの目的のためにIISモジュールが最適に動作します。IISモジュール経由でWebページの応答テキストを取得するにはどうすればよいですか?

必要に応じてキーワードを変換できるように、ブラウザに送信されるデータストリームを文字列に読み込むにはどうすればよいですか?

ご迷惑をおかけして申し訳ございません。

ここでは、コードです:

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; 
     } 
} 

答えて

1

2つの方法があります。

  1. 応答フィルタを使用して

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

  1. Hは、それはページ自体だけIHttpHandlerプロセスの前に実行されるように、アプリケーションのPreRequestHandlerExecuteイベントをandle:

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

    }

関連する問題