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


252

正直なところ、私はIISで汚いトリックを試してみましたが、それを回避しようと思ったとき、回避策が機能しないことに気付きました。これが私がやろうとしたことです:

1)私が持っているASP.NETアプリケーション持つプリローダーを継承するクラスIProcessHostPreloadClientとのすべての重い初期化を行いプリロードメソッドの実装は、(アプリケーションが複雑であり、それはすべての必要なへの接続を確立するために約2分を要するので、それは、巨大なシステムの一部だがサービスおよび一部のUnity登録の事前インスタンス化)。

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要求を送信する)に戻りますが、何が問題なのかわからないので、この問題は私を悩ませます。


IISのどのバージョンを使用していますか?
キューx 2013

IIS 7.5(7.5.7600.16385)
Ivan Peric

質問への直接の回答ではありませんが、同様の問題を抱えており、インターネットに接続するアプリケーションがあると想定している他のユーザーの場合:uptimerobot.comのような外部サービスを使用して、X時間ごとにアプリケーションに触れることができます。アプリを実行状態に保ち、サービスの追加の利点(稼働時間、アラートなど)を取得します。
qbantek 2014

@qbantek私が取り組んでいるアプリケーションはインターネット向けではありませんが、あなたは私に良いアイデアを与えてくれました。ロードバランサーを使用して、ヘルスステータスチェックのタイプをSimple HTTP GETに設定することで、定期的なタッチを実行できます。ありがとう
Ivan Peric 2014

回答:


24

問題

SimpleWorkerRequestを、それ用に設計されていないシナリオで使用しています。IIS内で使用しています。以前のMSDNリンクを見ると(強調は私のものです):

インターネットインフォメーションサービス(IIS)アプリケーションの外部でASP.NETアプリケーションをホストするために使用できるHttpWorkerRequest抽象クラスの簡単な実装を提供します。SimpleWorkerRequestを直接使用するか、拡張することができます。

また、System.Web.Hosting名前空間SimpleWorkerRequestこの名前空間にあります)のMSDNドキュメントを見ると、上記と同様のものが表示されます(ここでも強調は私のものです)。

System.Web.Hosting名前空間は、Microsoftインターネットインフォメーションサービス(IIS)外のマネージアプリケーションからASP.NETアプリケーションをホストするための機能を提供します

ソリューション

への通話を削除することをお勧めしSimpleWorkerRequestます。代わりに、Microsoftソリューションを使用して、リサイクル後にWebサイトが自動的に起動することを確認できます。必要なのはマイクロソフトです IIS 7.5のアプリケーション初期化モジュールです。設定は複雑ではありませんが、正確なオプションを理解する必要があります。これが、IIS 7.5のアプリケーション初期化UIも推奨する理由です。UIは、MSDNブロガーによって作成されています。

では、マイクロソフトのソリューションは正確には何をしているのでしょうか?それはあなたがやろうとしていることを実行します-IISはアプリケーションプールが開始された後に "get"リクエストをWebサイトに送信します。


2
私はコードで実装できるソリューションを探していましたが、これは「十分に良い」ものに近いので、賞金を獲得します。しかし、@ danijelkが提供した解決策は、私が指定した以外の理由でこの質問に遭遇したほとんどの人にとって最も役立つと思います。だから、これは彼らがそれを見てみるためのメモです。
Ivan Peric 2013年

650

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


お返事ありがとうございます。私はすでにそれを試しました、そしてそれはうまくいきませんでした。:( –
Osama khodrog

8
Windows Server 2012では機能しません。このページのZachの投稿を読んでください。
Ivan Akcheurov 2013

ありがとう。Azureの仮想マシンでこれを行うために働いた。しかし、私が知りたいのは、新しいインストールでこれを行わなければならない理由です。ASPNETは正しくインストールされたときにそれ自体を登録しますか?私の推測では、インストールの順序に関係しています。
David Bridge、

4
.NET 4.5.xまたは4.6.xを使用している場合、4.0についての回答にだまされて、それが当てはまらないと考えてはいけません。この問題は、私がそうであったように、IISの前に.NETをインストールする順序に関連している可能性があります。コマンド(私の場合は64ビットバージョン)を実行すると、アプリケーションで.NET 4.5.2を使用している場合でも修正されました。
コクシー

Windows 2008、フレッシュインストールAWSマイクロサーバーでは、このコマンドを実行する必要がありました。自分のシステムには関係ないと考えている私たちのためにです。
-terary、

170

Windows 8 / Windows Server 2012および.Net 4.5でこのエラーが発生した場合は、次の手順に従ってください。 ください。http //www.britishdeveloper.co.uk/2013/01/handler-extensionlessurlhandler.html

「Windowsの機能を有効または無効にする」に進みます。 ワイドワールド次に、[インターネットインフォメーションサービスのWebサービス、アプリケーション開発機能と、その後ASP.NET 4.5を有効にします

これは私にとってはうまくいきました(ウィザードと表現はWindows Server 2012では少し異なりますが、理解できるでしょう)。これが言われると、すべての依存関係を含むWeb Platform Installerを介してすべてをインストールした後にこれが必要な理由は完全に私を超えています...


3
Windows Serverの構成はPITAです。中央のパッケージ管理システムがないのはなぜですか?
Kugel

Webプラットフォームでiisをインストールした場合は、Virgo139のコメントを確認してください。問題は簡単に解決しました
castors33

これは、Windows 10 Proビルド1607での私の修正でした、乾杯!
Apogee 2017

これにより、Windows 10でも同様に修正されました。共通のコマンドライン修正(aspnet_regiis.exe -i)はWindows 10では許可されていないことに注意してください
Nat Webb

Windows 10 Proのソリューションを確認しました。
Zoomzoom

59

このページのほとんどのアドバイスに従っても、Windows Server 2012ではまだ問題が発生していました。.NETExtensibility 4.5をインストールすると解決しました。

Add Roles and Features > Server Roles > Web Server (IIS) > Web Server > Application Development > .NET Extensibility 4.5


2
それを綴ってくれてありがとう、私はWebサーバー-> Webサーバー-> Webサーバーパイプをあまりにも長く見つめていた... :)
Gleno

2
「役割と機能」>「サーバーの役割」>「Webサーバー(IIS)」>「Webサーバー」>「アプリケーション開発」>「ASP.NET 4.6(または、設定によっては4.5)」を確認することを忘れないでください
Lionet Chen

1
はい、次にIISサービスを再起動します。私のために働いた!ありがとう。+1
Rusty Nail

47

以下のためのWindows 10 / Windows Serverの2016年には、次のコマンドを使用します。

dism /online /enable-feature /featurename:IIS-ASPNET45 /all

の推奨回答aspnet_regiisは、Windows 10(Creators Update以降)またはWindows Server 2016では機能しません。

C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ aspnet_regiis.exe -i
Microsoft(R)ASP.NET RegIIS version 4.0.30319.0ローカル
ユーティリティでASP.NETをインストールおよびアンインストールするための管理ユーティリティ。
Copyright(C)Microsoft Corporation。全著作権所有。
ASP.NET(4.0.30319.0)のインストールを開始します。
このオプションは、このバージョンのオペレーティングシステムではサポートされていません。管理者は代わりに、[Windowsの機能のオン/オフ]ダイアログ、サーバーマネージャー管理ツール、またはdism.exeコマンドラインツールを使用して、IIS8でASP.NET 4.5をインストール/アンインストールする必要があります。 詳細については、http://go.microsoft.com/fwlink/?LinkID=216771を参照してください
ASP.NET(4.0.30319.0)のインストールが完了しました。

興味深いことに、[Windowsの機能をオン/オフにする]ダイアログでは.NETもASP.NET 4.6もチェックを外せず、上記のDISMコマンドのみが機能しました。featurenameが正しいかどうかはわかりませんが、私にとってはうまくいきました。


これで問題が解決しました。クリエーターアップデートを使用してWindows 10 proを実行していました。ありがとう!
Samuel Poirier

伝説の答え!Webサーバーを再構築する必要があり、スクリプトを数年更新していなかったため、このDISMコマンドをVMプロビジョニングスクリプトに追加しました。
クリスシャラー

dism / online / enable-feature / featurename:IIS-ASPNET45 / all Windows Server 2016で私のために働いた
Syed Nasir Abbas

おかげさまで仕事は残っています!:)働いた。
スコット

42

次のいずれかのコマンドを実行します。

32ビットWindows OSの場合:

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

64ビットWindows OSの場合:

c:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -I

これを実行すると、 "aspnet_client"フォルダがIIS接続のSitesディレクトリの下のWebサイトに追加されることに気付きました
eaglei22

26

このhttps://stackoverflow.com/a/13266763/1277458は完全に動作します。ただし、64ビットのオペレーティングシステムを使用している場合は、パスにFrameworkではなくFramework64を使用します。

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

FWIW、Server 2012 R2は、このオプションはサポートされていないと述べており、[機能]ダイアログを使用してASP.NET 4.5を有効にすることを推奨しています
bvj

はい、ザックの答えはこれをカバーしています。
Neshta 2015年

13

私の場合(Windows 10 + IIS 10)「Windowsの機能をオンまたはオフにする」を開き、インターネットインフォメーションサービス> World Wide Webサービス>アプリケーション開発機能>に移動し、ASP.NET 4.6を確認する必要がありました。


1
私はWindows 2012 R2のIISでした。サーバーマネージャー>管理>役割と機能の追加>役割ベースまたは機能ベースのインストール>(サーバーを選択)> Webサーバー(IIS)> Webサーバー>アプリケーション開発> ASP.NET 4.5に互換性のあるASP.NETを追加しました。@ArsmanAhmadが言ったように、適切な健全性チェックは、アプリプールの.NET CLRバージョンがv4.0に設定されているかどうかを確認することです。
GBU

6

これは私が何時間も行っていたので、これを独自の投稿にする。

この問題とaspnet_regiisの修正について、ここや他のどこかで同様の投稿を数十回見ました。彼らは私のために働いていませんでした、そしてaspnet_regiisは奇妙な行動をしていました、ただオプションなどをリストしているだけです。

上記のユーザーryan-andersonが示すように、.exeを入力できません

サーバー上のIISの外部の事柄にあまり慣れていない人のために、簡単な手順でこれを行います。

  1. このパスに類似したフォルダーでaspnet_regiisを見つけます。c:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \

  2. スタートメニューまたはどこでもコマンドプロンプトを右クリックし、管理者として実行するように指示します。Windowsの「実行」機能を使用しても機能しないか、機能しませんでした。

  3. aspnet_regiis実行可能ファイルに戻ります。右クリックしてコマンドプロンプトにドラッグするか、アドレスをコマンドプロンプトにコピーして貼り付けます。

  4. そこにある場合は、最後にある.exeを削除します。これが鍵です。最後に-i(スペースマイナスアイ)を追加します。入る。

これを正しく行うと、asp.netのインストールが開始され、成功したことがわかります。


私には完璧に働きました。ありがとうございました。
マイク

5

IISマネージャーapplication-siteバージョンをからv2.0に設定したことを確認します。v4.0

アプリケーションプール>アプリケーション>詳細設定> .NET Frameworkバージョン

その後、あなたのインストール ASP.NET

32ビットOS(Windows)の場合:

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

64ビットOS(Windows)の場合:

C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ aspnet_regiis.exe -i

application-siteIISマネージャーでを再起動してお楽しみください。


ええ、私は答えを最も簡単にするために最善を尽くしました。;-) @yuyangJian
Arsman Ahmad

4

私はこれが古い人であることを知っていますが、私はいくつかの価値を追加するかもしれないと思いました。ドメイン外でServer Coreを実行している場合(ドメインメンバーは、サーバーマネージャーをリモートで実行して、機能/ロールを追加/削除することができます)、コマンドラインを使用する必要があります。

Powershellユーザーは「Install-WindowsFeature Web-Asp-Net45」と入力できます

これは、サーバーマネージャーを使用する場合と同じです。


4

同じエラーメッセージが表示され、.net 4.7がインストールされました。

解決策は、前述の1つの投稿に従って「Windowsの機能をオンまたはオフにする」ことです。この場合、「。NET Framework 4.7 Advanced Services」->「ASP.NET 4.7」はすでにチェックされています。

リストのさらに下には、「インターネットインフォメーションサービス」とサブノート「アプリケーション開発機能」->「ASP.NET 4.7」があり、これもチェックする必要があります。

これを有効にすると、他のすべての機能が有効になります... [OK]ボタンを押すだけで問題は解決しました。 Windows機能ダイアログのスクリーンダンプ


これはWindows 10 Proエディションであったことを付け加えて
おき

2

私はWindows Server 2012に取り組んでいます。.NETExtensibility 4.5機能はオンになっています。WebDAVModuleが削除されました。ASP.NETルート '/ docs'で500.21エラーが発生しました。

「skipManagedModules」をfalseに変更すると、問題が修正されました。

<applicationInitialization doAppInitAfterRestart="true" skipManagedModules="false">
        <add initializationPage="/docs" />    
</applicationInitialization>

https://groups.google.com/forum/#!topic/bonobo-git-server/GbdMXdDO4tIに感謝



1

私はこの問題を抱えており、Express以外のエディションでも、次のフォルダーを削除すると役立つことがわかりました。Express:

C:\Users\<user>\Documents\IISExpress


1

このエラーは先週どこからともなく起き始め、私のマシン上の既存のWebサイトに影響を与えました。ここでの提案のいずれかを試してもうまくいきませんでした。最終的に、IISからWebDAVを完全に削除しました(Windowsの機能->インターネットインフォメーションサービス-> World Wide Webサービス->一般的なHTTP機能-> WebDAVパブリッシング)。この後、IISを適切にリセットしましたが、ようやくエラーが解決しました。

Windowsのアップデートで問題が発生したと推測できるだけですが、確信が持てません。


ちょうど同じ問題がありました。IIS設定を切り替えるいくつかのWindowsアップデートをインストールしました。WebDAV Publishingをオフにすると再び修正されました。
ElliotSchmelliot 2015

0

iisの "ExtensionlessUrlHandler-Integrated-4.0"タイプをSystem.Web.DefaultHttpHandlerに変更することで修正できます


0

私にとって、サーバーからWebDAVを削除すると、アプリケーションがまたは503 Service Unavailableを使用したときにエラーメッセージが返されましたPUTDELETEため、再インストールしました。また、.NET Framework 4.5を完全に削除して再インストールし、提案どおりに再登録しようとしましたが、役に立ちませんでした。

これを修正するには、個々のアプリケーションプールのWebDAVを無効にします。これにより、PUTまたはを使用するときに「不良モジュール」エラーが発生しなくなりましたDELETE

個々のアプリプールのWebDAVを無効にする:

  1. 影響を受けるアプリケーションプールをクリックします
  2. WebDAV Authoring Toolsリストから探す
  3. クリックして開きます
  4. Disable WebDAV右上をクリックします。

だぁぁぁぁぁぁ!

削除アイテムをweb.configファイルに残しました。

 <system.webServer>
    <modules>
      <remove name="WebDAVModule"/>
    </modules>
    <handlers>
      <remove name="WebDAV" />
    </handlers>
 <system.webServer>

このリンクは私が説明を見つけた場所ですが、あまり明確ではありません。


0

これは、OPにとって有用な解決策ではないかもしれませんが、同じ「エラー」メッセージに関するものです。

.NET 4.5が正しくインストールされたIIS8.5でPHPページをホストしています。

プリロード機能を利用して、アプリケーションが常に全体的に応答するようにします。

しばらくすると、このエラーがランダムに発生し始めました。

web.configで:skipManagedModulesをtrueに設定します->これを行わないでください!

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
<applicationInitialization skipManagedModules="false" doAppInitAfterRestart="true">
  <add initializationPage="/" />
</applicationInitialization>
...

ウェブサイトはphpですが、ページングへのルーティングはモジュールによって管理されています!!!


0

私もその問題に遭遇しました。MVC4アプリがIIS 8.5を搭載したWindows Server 2012 R2で実行されています。これらの投稿された解決策はどれも私にとってはうまくいきませんでした... IIS機能を介して不足しているフレームワークをインストールすることで解決できたかもしれませんが、インストールは常に失敗しました。

を使用してWeb Platform Installer、次のパッケージをインストールする必要がありました。

ここに画像の説明を入力してください


0

共有ホスティングサーバーでホストされているWebアプリケーションでこの問題に直面していました。したがって、明らかにIISに直接アクセスできなかったため、ここで提案された多くのソリューションを適用できませんでした。

ホスティングプロバイダーのコントロールパネルで、IISとASP.Netのエラーログを有効にしました。そして、そのエラーは実際には欠落したcshtmlにあることを知りました。


0

.NET 4.7をインストールするとうまくいきました。以前は3.5しかインストールしていませんでした。ここに画像の説明を入力してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.