ハンドラー「ExtensionlessUrlHandler-Integrated-4.0」のモジュール リストに不正なモジュール「ManagedPipelineHandler」があります 質問する

ハンドラー「ExtensionlessUrlHandler-Integrated-4.0」のモジュール リストに不正なモジュール「ManagedPipelineHandler」があります 質問する

正直に言うと、私は IIS で不正行為を試みましたが、うまくやり過ごせると思った瞬間に、回避策が機能しないことに気づきました。私が試したことは次のとおりです。

1) IProcessHostPreloadClientを継承し、 Preloadメソッドの実装ですべての負荷の高い初期化を実行するPreloaderクラスを持つ ASP.NET アプリケーションがあります(アプリケーションは複雑で、巨大なシステムの一部であるため、必要なすべてのサービスへの接続を確立し、いくつかの Unity 登録を事前にインスタンス化するには約 2 分かかります)。

2) アプリケーションのシャットダウン時に実行する必要がある作業 (サブスクライブ解除、切断、破棄など) が多数ありますが、それを実行するのに最適な場所はGlobal.asaxにある *Application_End* メソッドだと思います。

3) ユーザー アクティビティがある場合、すべて正常に動作します (前述の Web アプリケーションを含むアプリケーション プールの開始後の最初の要求により *Application_Start* が呼び出され、その後アプリケーション プールの停止またはリサイクル時に *Application_End* が呼び出されます)。ただし、ユーザー アクティビティがなく、アプリケーションが 48 時間アクティブになった後に再起動しようとすると問題が発生します (構成された要件)。要求がなかったため、アプリケーションは正式には起動されませんでした。したがって、*Application_End* が呼び出されないため、正常に停止することはできません。

4) ここからが面倒な部分です... Preloadメソッドの最後のコードから GET リクエストを実行しようとしましたが、うまくいきました。しかし、この解決策はうまくいったにもかかわらず、私にはよくないように思えました。そこで、いろいろ試してみましたが、最後に試したのは次のことです。

SimpleWorkerRequest swr = new SimpleWorkerRequest(string.Empty, string.Empty, tw);
HttpRuntime.ProcessRequest(swr);

... これで目的は達成されました。*Application_Start* が呼び出され (応答を確認したところ、初期リクエストで表示されるはずのログイン ページが含まれていました)、アプリケーション プールのシャットダウン時に、*Application_End* で必要な作業を実行してアプリケーションが正常に終了しました。

しかし

このようにアプリケーションを起動 (プリロードおよび初期化) した後、Web ブラウザー経由でアプリケーションにアクセスしようとしたときに次のことが起こりました。

HTTP エラー 500.21 - 内部サーバー エラー ハンドラー「ExtensionlessUrlHandler-Integrated-4.0」のモジュール リストに不正なモジュール「ManagedPipelineHandler」があります

私にはこれが理解できません。なぜこのようなことが起こるのか、またどうすれば修正できるのか、誰か教えてもらえませんか?

これが解決しない場合は、最初の解決策 (コードから GET リクエストを送信する) に戻りますが、何が問題なのかさえわからないため、この問題は私を悩ませることになります。

ベストアンサー1

ASP.NET を で再登録してみてくださいaspnet_regiis -i。私の場合はうまくいきました。

.NET 4 の可能性のあるパス (管理者特権のコマンド プロンプトから):

c:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i

http://forums.iis.net/p/1190643/2026401.aspx

おすすめ記事