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つの異なるサーバーで試してみましたが、同じ結果が得られました。
他に何を試してみるべきですか?ありがとうございました
IISマネージハンドラーをクラシックモードで実行するように構成することはできません。それを行うには、統合モードでIISを実行する必要があります。
モジュール、ハンドラー、およびIISモードについての詳細は、次のブログ投稿で確認できます。
IIS 7.0、ASP.NET、パイプライン、モジュール、ハンドラー、および前提条件
ハンドラーの場合、マッピングでpreCondition = "integratedMode"を設定すると、ハンドラーは統合モードでのみ実行されます。一方、preCondition = "classicMode"を設定すると、ハンドラーはクラシックモードでのみ実行されます。 そして、これらの両方を省略すると、ハンドラーは両方のモードで実行できますが、マネージドハンドラーでは不可能です。
幸いなことに、それは非常に簡単に解決できます。管理者特権のコマンドプロンプトからfollowコマンドを実行します。
%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -i
32ビットマシンを使用している場合は、次を使用する必要があります。
%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i
私は同じ問題を抱えていて、実行中に次を実行することで解決しました
%windir%\ Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -i
私は同じ問題を抱えていて、それを解決しました。私はstackoverflowに自分の質問を投稿しました:
私のIHttpHandlerにPUTできません、GETは正常に動作します
解決策は、modules要素でrunManagedModulesForWebDavRequestsをtrueに設定することでした。私の推測では、WebDAVをインストールすると、すべてのPUT要求がそれに関連付けられます。 PUTをハンドラーに移動する必要がある場合は、WebDAVモジュールを削除して、この属性をtrueに設定する必要があります。
<modules runManagedModulesForWebDavRequests="true">
...
</modules>
したがって、PUT verbを使用するときに問題に直面していて、WebDAVをインストールしている場合、このソリューションが問題を解決することを願っています。
Windows Server 2016では、私は使用しています:
dism /online /enable-feature /featurename:IIS-ASPNET45 /all
Powershellでも実行できます。
Install-WindowsFeature .NET-Framework-45-Features
この状況は、ASP.netのサービスをインストール/開始していないために発生します。
Windows 7、8、10で以下のコマンドを使用します。
%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i