背景: 今日、会社の端末で関数を開く際に例外が発生し、500 エラーが報告されました。Fiddler を使用してリンクを見つけ、IE で開いたところ、500.23 エラーが報告されました。ASP.NET 設定は、ASP.NET では適用されません。統合ホスティング パイプライン モードが検出されました。背景にはIIS7とtomcat7が統合された環境があり、これを記録します。
HTTP エラー 500.23 - 内部サーバー エラー
統合ホスティング パイプライン モードに適用されない ASP.NET 設定が検出されました。
上記のエラーが発生するのはなぜですか?
IIS7 のアプリケーション プールには 2 つのモードがあり、1 つは「統合モード」、もう 1 つは「クラシック モード」です。
クラシック モードは、私たちが使い慣れている IIS 6 の方法です。
統合モードを使用する場合は、カスタム httpModules と httpHandlers の設定ファイルを変更し、それらを
2 つの解決策:
最初の方法は、アプリケーション プールを構成することです。
IIS7 でアプリケーション プールを構成し、アプリケーション プールのモードを「クラシック」に変更します。その後はすべてが正常になります。図に示すように:
IIS7。web.config 構成ファイルを変更する 2 つの方法:
注: web.config パスは C:inetpubwwwrootweb.config です
たとえば、元の設定 (環境に httpModules、httpHandlers ノードがない場合)
<system.web> ............ <httpModules> <add name="MyModule"type="MyApp.MyModule" /> </httpModules> <httpHandlers> <add path="*.myh"verb="GET"type="MyApp.MyHandler" /> </httpHandlers> </system.web>
IIS7 アプリケーション プールでは、「統合モード」になっているため、次のように変更します:
<system.web> ........... </system.web> <system.webServer> <modules> <add name="MyModule"type="MyApp.MyModule" /> </modules> <handlers> <add name="MyHandler"path="*.myh"verb="GET"type="MyApp.MyHandler"preCondition="integratedMode" /> </handlers> </system.webServer>
(web.config に httpModules、httpHandlers ノードがない場合は、ノード system.webServer:
<validation validateIntegratedModeConfiguration="false" />
エラーを回避するために統合モードの検証を無効にします
IIS ログの場所
IIS 6.0 ログは次の場所に保存されます:c:windowssystem32logfiles
IIS 7 ログは次の場所に保存されます:
テスト後、IIS ログは即座に書き込まれ、IIS のリセットは必要ありません。
IIS 6 と 7 のログは、サイトごとに異なるフォルダーに書き込まれます。場所フォルダーの形式は「w3svc{siteId}」です。
IIS6 では、サイト ID を表示する方法は IIS を介して行われます。
IIS7 では、IIS マネージャーの詳細設定で、ログ フォルダーの名前が使用されます。はサイト ID であり、この ID を使用して LogFiles フォルダー内のどのファイルが表示するサイトに属しているかを見つける必要があります
統合とクラシックの違い
IIS7 アプリケーション プールには 2 つのモードがあります。 1 つは統合モードで、もう 1 つはクラシック モードです。次に、カスタム httpModules と httpHandlers を変更し、それらを
IIS7.0 クラシック モード: 上記の状況とは異なり、
クラシック vs 統合
一方、統合モードは、IIS パイプラインが Asp.net 要求パイプラインと緊密に統合されている (つまり、まったく同じです)、ASP.NET が必要とするすべての要求を認識し、途中で処理することができる IIS7 の新しいモードです。このモードでは、ASP.NET は外部プラグインとして扱われなくなり、IIS に完全に統合され、Asp.net HttpModules は基本的に ISAPI フィルターとほぼ同じ能力を持ちます。このモードでは、Asp.net は基本的に IIS の一部です