2012-01-20 11 views
5

私は単純なHttpModuleを作成しました。このHttpModuleは、応答をクライアントに送る前に空白を削除します。これはIIS7.0上のaspxページでうまく動作しますが、静的なhtmlページを作成して呼び出すと、HttpModuleは(ソースが空白を含んでいるために削除されているはずなので、私が知っている方法ではありません。どうやら私は正しいことをしていないのですが、何を知っているのか分かりません。静的なHTMLページを作る方法IIS7.0のHttpModuleを経由ですか?

私のウェブサイトは.NET 4.0およびManagedPipelineMode = Integratedのアプリケーションプールにあります。

私は自分のモジュールをManagedModuleとして追加し、GACの強力な名前のアセンブリを参照しています。

おかげでここ

編集 - は、web.configファイルからsystem.webserverの一部である

<system.webServer> 
    ... 
    <modules runAllManagedModulesForAllRequests="true"> 
    <add name="RemoveWhitespaceHttpModule" 
     type="HttpModules.Modules.RemoveWhitespaceHttpModule, HttpModules, 
      Version=1.0.0.0, Culture=neutral, PublicKeyToken=8a83u4bi47o9fo0d" 
      preCondition="" /> 
    </modules> 
    <defaultDocument> 
    <files> 
     <add value="TestForm.aspx" /> 
    </files> 
    </defaultDocument> 
</system.webServer> 

は、編集 - それを修正しました。私のモジュールが応答をチェックして、空白除去を続行するかどうかを決定しますか

if (contentType.Equals("text/html") 
    && httpContext.Response.StatusCode == 200 
    && httpContext.CurrentHandler != null) 
{ ... } 

問題がhttpContext.CurrentHandler!= nullをの上に第三の条件であったか興味がある人のために、これはあります。静的な.htmlページのためにこのモジュールを呼び出すと、currentHandlerはnullだったので、コードはhtmlを操作するために内部に入りませんでした。私はこの第3の条件を削除して、今すぐ動作します。あなたのお返事に感謝します。

+0

静的な.htmlページの名前を.aspx(必要なコンテンツは変更されていません)に変更してください。 – Alex

+0

GZIPは既にこれを行っています。http://stackoverflow.com/questions/702124/enable-iis7-gzip – jrummell

+0

@alex - それは私が達成したいものではありません。私は簡単にそれを行うことができ、この質問を全く提起していない可能性があります。私はこのhttpmoduleをasp.netアプリケーションだけでなく、ColdFusionアプリケーションにも使用できるようにしたいと考えています。私の目的は、それを.htmlページのために働かせ、そこから取得することです。 –

答えて

3

これはトリックを行う必要があり、web.configファイルになります。

<modules runAllManagedModulesForAllRequests="true"></modules> 

これは、迅速かつ簡単な解決策ですが、発生する可能性があります問題/パフォーマンスの問題。

+0

既にこれを試しても動作しません。 –

+0

あなたのモジュールはsystem.webserver> modulesに登録されていますか?それ以外の場合は取得されません。もしそうなら、あなたのweb.configの部分を投稿してください – ScottE

+0

はい..メインの質問のweb.configからsystem.webserverの部分を追加しました –

1

IISでハンドラマッピングを調べる必要があります。

ハンドラが動作する仕組みは、IIS上で、ハンドラが登録され、特定の種類のページを処理すると想定されます。 IISの "Handler Mappings"を見ることができます[実行コマンドでinetmgrを入力し、Enterキーを押します。 IISマネージャがポップアップし、IISのセクションでハンドラマッピングを探し]

+0

具体的にどのような設定を行うかアドバイスしますか? * .htmlでハンドラマッピングを追加しようとしましたが、これは目的を果たさなかった –

+3

彼はHttpHandlerではなくHttpModuleについて尋ねました。 – brushleaf

+0

@brushleaf:ありがとう。私は訂正した。 – Kangkan

関連する問題