私は単純な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の条件を削除して、今すぐ動作します。あなたのお返事に感謝します。
静的な.htmlページの名前を.aspx(必要なコンテンツは変更されていません)に変更してください。 – Alex
GZIPは既にこれを行っています。http://stackoverflow.com/questions/702124/enable-iis7-gzip – jrummell
@alex - それは私が達成したいものではありません。私は簡単にそれを行うことができ、この質問を全く提起していない可能性があります。私はこのhttpmoduleをasp.netアプリケーションだけでなく、ColdFusionアプリケーションにも使用できるようにしたいと考えています。私の目的は、それを.htmlページのために働かせ、そこから取得することです。 –