5

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

私のWebサイトは、.NET4.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の上の3番目の条件にありました。静的な.htmlページに対してこのモジュールを呼び出すと、currentHandlerがnullであったため、コードがhtmlを操作するために内部に入ることはありませんでした。この3番目の条件を削除しましたが、現在は機能しています。みなさん、ありがとうございました

4

2 に答える 2

3

これで、web.configでうまくいくはずです。

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

これは迅速で簡単な解決策ですが、問題やパフォーマンスの問題を引き起こす可能性があります。

于 2012-01-20T13:10:43.017 に答える
1

IISのハンドラーマッピングを確認する必要があります。

ハンドラーの仕組みは、IISでハンドラーが登録され、特定の種類のページを処理することになっていることです。IISの「ハンドラーマッピング」を確認できます[ファイル名を指定して実行コマンドを入力inetmgrし、Enterキーを押します。IISマネージャーがポップアップし、IISセクションでハンドラーマッピングを探します。]

于 2012-01-20T12:53:35.793 に答える