web-dev-qa-db-ja.com

IIS 7、HttpHandlerおよびHTTPエラー500.21

On IIS 7、ASP.NET WebアプリケーションにカスタムHttpHandlerを使用しようとしています。パイプラインモード「クラシック」を使用しています。NETバージョンは4.0.30319、web.config構成ですハンドラーの場合:

<system.webServer>
<handlers>
    <add name="MyHandler" path="*.myExtension" verb="*" type="Company.App.UI.Controls.MyHandler, Company.App.UI" resourceType="Unspecified" />
</handlers>
</system.webServer> 

このハンドラーを呼び出すと、次のエラーが表示されます。

HTTP Error 500.21 - Internal Server Error
Handler "MyHandler" has a bad module "ManagedPipelineHandler" in its module list

私はグーグル検索をしました、ほとんどの人はaspnet_regiis.exe/iコマンドでASP.NETを再登録することでこの問題を修正しましたが、これはnot私のために働いています(コマンドが終了し、私は再起動しますIIS、ただし同じエラー)。 2つの異なるサーバーで試してみましたが、同じ結果が得られました。

他に何を試してみるべきですか?ありがとうございました

16
Mikee

IISマネージハンドラーをクラシックモードで実行するように構成することはできません。それを行うには、統合モードでIISを実行する必要があります。

モジュール、ハンドラー、およびIISモードについての詳細は、次のブログ投稿で確認できます。

IIS 7.0、ASP.NET、パイプライン、モジュール、ハンドラー、および前提条件

ハンドラーの場合、マッピングでpreCondition = "integratedMode"を設定すると、ハンドラーは統合モードでのみ実行されます。一方、preCondition = "classicMode"を設定すると、ハンドラーはクラシックモードでのみ実行されます。 そして、これらの両方を省略すると、ハンドラーは両方のモードで実行できますが、マネージドハンドラーでは不可能です

17
João Angelo

幸いなことに、それは非常に簡単に解決できます。管理者特権のコマンドプロンプトからfollowコマンドを実行します。

%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -i

32ビットマシンを使用している場合は、次を使用する必要があります。

%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i
13
meganhost.com

私は同じ問題を抱えていて、実行中に次を実行することで解決しました

%windir%\ Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -i

10

私は同じ問題を抱えていて、それを解決しました。私はstackoverflowに自分の質問を投稿しました:

私のIHttpHandlerにPUTできません、GETは正常に動作します

解決策は、modules要素でrunManagedModulesForWebDavRequestsをtrueに設定することでした。私の推測では、WebDAVをインストールすると、すべてのPUT要求がそれに関連付けられます。 PUTをハンドラーに移動する必要がある場合は、WebDAVモジュールを削除して、この属性をtrueに設定する必要があります。

<modules runManagedModulesForWebDavRequests="true">
...
</modules>

したがって、PUT verbを使用するときに問題に直面していて、WebDAVをインストールしている場合、このソリューションが問題を解決することを願っています。

2
nickdu

Windows Server 2016では、私は使用しています:

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

Powershellでも実行できます。

Install-WindowsFeature .NET-Framework-45-Features

1
Garfius

この状況は、ASP.netのサービスをインストール/開始していないために発生します。

Windows 7、8、10で以下のコマンドを使用します。

%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i
0
Dhiral Kaniya