IIS 7とIIS 6におけるHttpModuleとHttpHandlersの違い

7355 ワード

一、IIS 7.0の二つのモードを認識する
IIS 7.0のWebアプリケーションには、クラシックモードと統合モードの2つの構成モードがあります.
クラシックモードは、以前のバージョンと互換性を持つため、ISAPI拡張を使用してASPを呼び出す.NETライブラリを実行します.IIS 6.0のWebアプリケーションをIIS 7.0に移行するには、アプリケーションをクラシックモードに構成すれば、コードは基本的に変更せずに正常に動作します.
統合モードは統一的な哀願処理パイプであり、ASP.NET要求パイプはIISコアパイプと組み合わせられ、このモードはより良い性能を提供し、構成と管理のモジュール化を実現し、管理コードモジュールを使用してIISを拡張する際の柔軟性を増加させることができる.古いWebアプリケーションはIIS 7で実行する.0の統合モードでは、アプリケーションのwebが必要になる場合があります.configファイルは、特にIHttpHandlerインタフェースを実装するカスタムモジュールを使用した場合に修正されます.IIS7.0同じサーバ上で2つのモードのアプリケーションを同時にサポートできます.
IIS6.0中ASP.NET MMC管理部は、ASPを構成する.NET,7.0中ASP.NETアプリケーションの管理ドメインIIS管理はより緊密に統合されており、個別の管理ユニットは存在せず、すべてのIISとASP.NET構成はIISマネージャを使用して行います.IIS7.0構成情報に基づく.NET frameworkはシステムを構成するのでIIS 7.0で実行するアプリケーションのweb.configファイルはwebサーバとASPを同時に含む.NETの構成設定は、例えるweb.configファイルに拡張子とファイルのマッピングを設定します(IIS 6.0ではIISで構成する必要があります).
 
web.configファイルの変更
system.webServer       web     IIS7.0  ,     configuration,             :
defaultDocument:           ,Web              
httpCompression:
HttpProtocol customHeaders:
modules:
handlers:

一部の設定は統合モードにのみ適用され、クラシックモードで実行するアプリケーションはwebを無視するなど、クラシックモードには適用されません.义齿WebServerセクションで指定されたすべての管理コードモジュールとハンドラは、syste.WebセクションのhttpModulesとhttpHandlersでは、モジュールとハンドラを定義します.
Webアプリケーションの統合モードへの移行
カスタム・モジュールまたはハンドラに依存するWebアプリケーション:クラシック・モードから統合モードにアプリケーションを移行するときに、クラシック・モードでのカスタム・モジュールおよびハンドラの登録を保持したり、削除したりできます.クラシックモードで使用されているhttpModulesとhttpHandlersの登録を削除しない場合は、エラーを回避するためにvalidation要素のvalidateIntegratedModeConfigurationプロパティをfalseに設定する必要があります.validation要素はsystemです.WebServer要素のサブ要素.
Webを移行する.configファイルを統合モードで使用
モジュールまたはハンドラがアプリケーション・レベルで定義されている場合、モジュールまたはハンドラは自動的に呼び出されません.これには、次の条件を満たすモジュールまたはハンドラが含まれます.
Binフォルダの下にあるプログラムセット定義;
App_Codeフォルダの下でソースコードとして定義します.
WebではありませんファイルのシステムWebServerセクションでの登録と定義.
モジュールまたはプロセッサが統合モード要求パイプに参加できるようにするには、次のいずれかの方法でモジュールまたはプロセッサを登録する必要があります.
Webを直接編集する.configファイル、modulesまたはhandlers要素をsystemに追加します.WebServer要素にあります.
クラシックモードと比較して、要素名は異なります.modulesとhandlersは、クラシックモードのhttpModulesとhttpHandlersにそれぞれ対応します.
IISマネージャを使用してモジュールまたはプロセッサを構成します.
 
IIS 7.0における統合モードおよび.NET framework 3.0以降でアプリケーションを使用する場合は、クラシックモードでは使用できないクラスおよびメンバーを使用できます.
HttpResponseオブジェクトのSubStatusCodeプロパティを使用して、失敗したリクエスト追跡を構成した場合に役立つコードを設定できます.
HttpResponseオブジェクトのHeadersプロパティで、応答ヘッダにアクセスできます.
HttpContextオブジェクトのIsPostNotificationおよびCurrentNotificationプロパティは、HttpApplicationイベントのハンドラを提供するときに使用できます.
書き込み機能をサポートするHttpRequestオブジェクトのHeadersおよびServerVariablesプロパティ.
 
二、IIS 6.0とIIS 7.0の配置:
 
HTTP handlers

IIS 6.0
<system.web>

    <httpHandlers>

      <add verb="*" path="SampleHandler.new"  type="SampleHandler, SampleHandlerAssembly" />

    </httpHandlers>

<system.web>

 
IIS 7.0クラシックモード
<system.web>

    <httpHandlers>

      <add verb="*" path="SampleHandler.new"  type="SampleHandler, SampleHandlerAssembly" />      
</httpHandlers> <system.web> <system.webServer> <add name=SampleHandler" verb="*" path="SampleHandler.new" Modules="IsapiModule" scriptProcessor="FrameworkPath\aspet_isapi.dll" resourceType="File" /> </system.webServer>

 
IIS 7.0統合モード
<system.webServer>

    <handlers>

      <add name="SampleHandler" verb="*"  path="SampleHandler.new"  type="SampleHandler, SampleHandlerAssembly"  resourceType="Unspecified" />
</handlers>
<system.webServer>

 
HTTP Module
IIS 6.0およびIIS 7.0クラシックモード
<system.web>

    <httpModules>

      <add name="HelloWorldModule" type="HelloWorldModule"/>

     </httpModules>

</system.web>

 
IIS 7.0統合モード
<system.webServer>

    <modules>

      <add name="HelloWorldModule" type="HelloWorldModule"/>

    </modules>

</system.webServer>

 
原文ブログ:
http://www.cntxk.com/CataNews/57/info8472.html
http://www.cnblogs.com/xuchengzone/archive/2012/08/07/iis.html
http://www.cnblogs.com/buaaboyi/archive/2011/01/20/1939903.html