WebDAVをインストールして自分のサイトで実行していますが、仮想サブサイトとしてMVC WebAPIサイトがあり、PUTリクエストを送信しようとするまで、APIは正常に機能します。その後、次のエラーが発生します。
HTTPエラー500.21-内部サーバーエラー
ハンドラー "ExtensionlessUrlHandler-Integrated-4.0"のモジュールリストに不正なモジュール "ManagedPipelineHandler"があります
WebDAVを無効にすると、すべてが正常に機能し、エラーは発生しません。これは、WebDAVが有効になっている場合にのみ発生します。
Web.configに次のコードがすべて含まれています。
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="false">
<remove name="WebDAVModule" />
</modules>
<handlers>
<remove name="WebDAV" />
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
</system.webServer>
さまざまなアプリプールをいじってみました。
私はまた、これらすべての質問で言及されているすべてのものに疲れました:
このエラーを取り除く方法ハンドラー "PageHandlerFactory-Integrated"のモジュールリストに不正なモジュール "ManagedPipelineHandler"があります
ハンドラー "ExtensionlessUrlHandler-Integrated-4.0"のモジュールリストに不正なモジュール "ManagedPipelineHandler"があります
修正方法:ハンドラー "PageHandlerFactory-Integrated"のモジュールリストに不正なモジュール "ManagedPipelineHandler"があります
これのどれも私の問題を解決しませんでした、私が試したことのないものは他にありますか?
私たちはこれでマイクロソフトに行くことになりました、彼らは戻ってくる前に数週間それをレビューしました同じサイトでWebDAVとWebAPIを実行することは不可能です。
彼らは、IISの将来のリリースでこの問題に対処しようとします。
ハンドラーの宣言にタイプミスの問題がある可能性があります。 Thomas Marquardtのブログによると
5.0トラブルシューティング
以下のようなエラーが発生した場合は、セクションが無効である可能性があります。
HTTPエラー500.21-内部サーバーエラーハンドラー ""のモジュールリストに不正なモジュール "ManagedPipelineHandler"が含まれています正しい前提条件がないハンドラーマッピングがある可能性があります。 IISはタイプミスに関して寛容ではなく、前提条件では大文字と小文字が区別されます。テキストはpreCondition =” IntegratedMode”またはpreCondition =” classicMode”である必要があります。
また、その記事へのコメントからの別の提案:
アンドリュージョンソン2011年1月25日午前3時20分#:
ハンドラーにrequireAccess = "None"がある場合、「ハンドラーのモジュールリストに不正なモジュールManagedPipelineHandlerがあります」も取得できることがわかりました。私の場合、これをrequireAccess = "Read"に変更すると、エラーがなくなりました。
そのコメントは、applicationHost.configのWebDavハンドラーのエントリが次のようになっているのであなたのケースに当てはまるかもしれません(requredAccess="None"
に注意してください):
<add name="WebDAV" path="*" verb="PROPFIND,PROPPATCH,MKCOL,PUT,COPY,DELETE,MOVE,LOCK,UNLOCK" modules="WebDAVModule" resourceType="Unspecified" requireAccess="None" />
この問題の代替案が見つかりました。サーバーのパッチがプッシュされると、デフォルトのフレームワークが2.0に戻されました。フレームワーク4.0フォルダーC:\ Windows\Microsoft.NET\Framework64\v4.0.30319に移動して、.Netフレームワークを再登録します。コマンドaspnet_regiis-Iを実行します。
Web.configをチェックして.Netフレームワークのバージョンと一致させます
IIS->アプリケーションプール)に移動し、.Netフレームワークの値を4.0に設定します。IISを再起動します。