2012-08-22 13 views
13

IIS 7では、ASP.NET WebアプリケーションにカスタムHttpHandlerを使用しようとしています。私は「古典的な」パイプラインモードを使用して、.NETのバージョンが4.0.30319で、ハンドラのための私のweb.configの設定は次のとおりです。IIS 7、HttpHandlerおよびHTTPエラー500.21

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

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

私はこのハンドラを呼び出すと、私はこのエラーを取得します

私はgoogle検索を行いました。ほとんどの人がaspnet_regiis.exe/iコマンドでASP.NETを再登録してこの問題を解決しましたが、これはではありません。は私のために働いていません(コマンドは終了しました。エラー)。私は2つの異なるサーバーで試しましたが、同じ結果が得られました。

他に何を試してください。ありがとうございます

答えて

14

IISマネージハンドラをクラシックモードで実行するように設定することはできません。もしそうしたいのであれば、IISを統合モードで実行する必要があります。あなたは、次のブログ記事では、モジュール、ハンドラーとIISモードについての詳細を学ぶことができ

IIS 7.0, ASP.NET, pipelines, modules, handlers, and preconditions

For handlers, if you set preCondition="integratedMode" in the mapping, the handler will only run in integrated mode. On the other hand, if you set preCondition="classicMode" the handler will only run in classic mode. And if you omit both of these, the handler can run in both modes, although this is not possible for a managed handler.

+23

私は同じ問題を抱えて。私のサーバは、Window Server 2008 R2、IIS 7.0を使用しています。私はこのフォルダc:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \に来て、このコマンドをaspnet_regiis -iで実行すると、問題は解決されました。 – nvtthang

+0

ありがとうnvtthang! – alsantos123

+0

私もaspnet_regiisをやってくれました:)ありがとう@nvtthang –

-1

一つ私が見つけた解決策は、あなたがネットを変更する必要がありますということですフレームワークを右クリックしてv2.0に戻すアドバンス設定のアプリケーションプールの下にある管理者のサイトを右クリックします。

1

私は同じ問題を抱え、それを解決しました。ソリューションは、モジュール要素でtrueにrunManagedModulesForWebDavRequestsを設定することでした

Can't PUT to my IHttpHandler, GET works fine

:私はStackOverflowの上で自分の質問を掲示していました。私の推測では、WebDAVをインストールすると、すべてのPUTリクエストが関連付けられているということです。 PUTがハンドラに移動する必要がある場合は、WebDAVモジュールを削除してこの属性をtrueに設定する必要があります。あなたはPUT動詞を使用するときに問題に実行していると、あなたはWebDAVをインストールした場合

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

それではうまくいけば、このソリューションは、あなたの問題を解決します。

+0

あなたは私の一日を救った! – Maxime

7

幸いにも、解決するのは非常に簡単です。昇格したコマンドプロンプトから次のコマンドを実行します。

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

あなたは32ビットマシンにしている場合は、以下を使用する必要がある場合があります

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

これは、私が.exeを削除した場合にのみ、これは私のために働いた 私はなぜわからない。 – shubniggurath

+0

それは私のためにもWin 7 Proの箱で働いた。管理者としてコマンドプロンプトを実行する必要がありました。 –

7

私は同じ問題を抱えていたとしました

%windir%\ Microsoft.NET \ Framework64 \ v4.0.30319 \ aspnet_regiisを実行して解決しました。私が使用しているWindowsサーバー2016上でexeファイル-i

+1

これも私のために働いた。 :) –

-1

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

はまた、PowerShellの経由で行うことができます。

Install-WindowsFeature .NET-Framework-45-Features

関連する問題