4

統合モードで実行されているアプリケーションプールにアプリケーションがあります。system.web> httpHandlersにハンドラーを追加しましたが、404の結果が得られ続けました。そこで、失敗したリクエストのトレースを有効にしました。リクエストの詳細には、次のような複数の全体が表示されます。

HANDLER_PRECONDITION_NOT_MATCH名前:PageHandlerFactory-ISAPI-2.0前提条件classicMode、runtimeVersionv2.0、bitness32

前提条件は常にclassicModeのようです。アプリケーションプールが統合モードで実行されているときに、IIS 7が要求をこれらのハンドラーに一致させようとするのはなぜですか?

ありがとう!

4

2 に答える 2

0

デフォルトでクラシックモードに設定されている理由はわかりませんでしたが、このブログではさまざまな前提条件が非常によく説明されていました

以下は、「モードの​​前提条件」に関するブログからの抜粋です。

モードの前提条件

新しいマネージド モジュールとマネージド ハンドラーの拡張性により、マネージ コード (ASP.NET ページ、モジュール、およびハンドラー) を IIS7 パイプラインに直接追加できます。IIS7 では、これを機能させるために特定の方法でワーカー プロセスを実行する必要があります。.NET Framework 2.0 をロードする必要があり、webengine.dll というモジュールを実行する必要もあります。IIS7 自体はマネージ コードを認識しないため、Webengine.dll はマネージ モジュールを IIS7 パイプラインに接続するすべての作業を行います。ASP.NET ページ、モジュール、およびハンドラーを統合する新しい方法は、「統合モード」と呼ばれます。

しかし、IIS7 でマネージ コードを接続するための古き良き方法、つまり ISAPI インターフェイスを使用する方法がまだあります。ASPNET_ISAPI.DLL は、IIS 5、5.1、および 6.0 でこれを行っていました。ワーカー プロセスを「クラシック モード」で実行する場合、IIS7 は引き続き ISAPI フックアップをサポートします。

その結果、IIS7 では「integratedMode」と「classicMode」という 2 つの前提条件が導入されました。"integratedMode" 前提条件が関連付けられているハンドラーは、ApplicationPool に "integratedMode" プロパティが設定されているアプリケーション プールにのみ読み込まれます。"classicMode" 前提条件を持つハンドラーは、integratedMode プロパティが false に設定されているアプリケーション プールにのみ読み込まれます。

于 2010-09-28T13:19:32.820 に答える
0

HttpHandler は、実際にはファイルの<system.webServer/>セクションで構成する必要がありweb.configます。

于 2009-10-21T05:24:22.763 に答える