269

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

1) IProcessHostPreloadClientを継承し、 Preloadメソッドの実装ですべての重い初期化を行うPreloaderクラスを持つASP.NETアプリケーションがあります(アプリケーションは複雑で、巨大なシステムの一部であるため、必要なすべての接続を確立するのに約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リクエストを送信する)に戻りますが、何が問題なのかさえわからないため、この問題は私を悩ませます。

4

22 に答える 22

654

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

于 2012-11-07T09:29:46.517 に答える
184

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

[Windowsの機能をオンまたはオフにする] 、[インターネットインフォメーションサービス]、[World Wide Webサービス]、[アプリケーション開発機能]の順に移動し 、ASP.NET4.5を有効にします。

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

于 2013-02-26T22:54:21.857 に答える
68

このページのほとんどのアドバイスに従ったにもかかわらず、Windows Server2012でまだ問題が発生していました。.NETExtensibility4.5をインストールすると、次の問題が解決しました。

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

于 2013-07-31T11:43:53.913 に答える
58

Windows 10 / Windows Server 2016の場合、次のコマンドを使用します。

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

推奨される回答はaspnet_regiis、Windows 10(Creators Update以降)またはWindowsServer2016では機能しません。

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

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

于 2017-01-05T05:57:20.843 に答える
42

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

32ビットWindowsOSの場合:

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

64ビットWindowsOSの場合:

c:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -I
于 2014-07-31T15:40:19.137 に答える
26

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

c:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -i
于 2014-06-23T11:05:49.830 に答える
25

問題

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

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

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

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

ソリューション

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

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

于 2013-11-26T21:35:59.167 に答える
13

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

于 2016-01-09T21:35:35.207 に答える
7

この問題を解決し、「Windowsの機能をオンまたはオフにする」オプションASP.NET4.7を追加しました。

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

于 2018-02-22T01:09:37.313 に答える
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のインストールが開始され、成功したことが通知されます。

于 2017-03-10T15:17:33.940 に答える
5

IISマネージャーapplication-siteバージョンをからv2.0に設定していることを確認してください。v4.0

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

その後、をインストールします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マネージャーで再起動してお楽しみください。

于 2016-10-31T12:25:51.267 に答える
4

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

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

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

于 2013-08-19T09:43:36.370 に答える
4

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

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

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

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

于 2017-12-14T15:10:48.643 に答える
2

私はWindowsServer2012に取り組んでいます。.NETExtensibility4.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に感謝します

于 2015-11-20T09:42:35.717 に答える
2

.NET4.7のインストールは私のために働いた。以前は3.5しかインストールしていませんでした。ここに画像の説明を入力してください

于 2020-02-19T19:37:31.493 に答える
1

この問題が発生し、Express以外のエディションの場合でも、次のフォルダーを削除すると役立つことがわかりました。

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

于 2013-02-15T12:13:31.977 に答える
1

このエラーは先週どこからともなく起こり始め、私のマシン上の既存のWebサイトに影響を及ぼしました。ここで提案を試してみるのは運が悪かった。最終的に、IISからWebDAVを完全に削除しました(Windowsの機能->インターネットインフォメーションサービス->ワールドワイドウェブサービス->共通のHTTP機能-> WebDAVの公開)。この後、適切な対策としてIISリセットを実行しましたが、エラーは最終的に解決されました。

Windows Updateが問題を引き起こしたと推測することしかできませんが、確信が持てません。

于 2015-03-30T20:33:36.893 に答える
0

これを修正するには、iisの「ExtensionlessUrlHandler-Integrated-4.0」タイプをSystem.Web.DefaultHttpHandlerに変更します。

于 2014-05-21T15:53:50.407 に答える
0

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

個々のアプリケーションプールの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>

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

于 2015-02-18T10:39:28.977 に答える
0

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

.NET4.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ですが、ページングへのルーティングはモジュールによって管理されます!!!

于 2015-05-26T14:54:49.313 に答える
0

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

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

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

于 2016-01-07T12:00:09.667 に答える
0

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

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

于 2017-03-05T14:19:45.857 に答える