私はMVCアプリケーションを合理化し、可能な限り削除しようとしています。誰かが、以下のこのコードがアプリケーションのルートにあるweb.configファイルで何をするのか説明してくれますか。私はコメントアウトしましたが、それでもアプリケーションを実行できました...
<system.webServer>
<handlers>
<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>
...
私はこの質問を見ました: ASP.NET MVC 4 and ExtensionlessUrlHandler これはこのブログにリンクする答えがあります: http://blogs.msdn.com/b/tmarq/archive /2010/05/26/how-extensionless-urls-are-handled-by-asp-net-v4.aspx しかし、私の質問を説明するために見つけることができません。
私は使用しています:IIS 8、ASP.NET MVC 4 .NET 4.5開発と本番の両方で
IIS ExpressはIISとは異なるハンドラー名を使用します
次のマークアップを追加すると、IIS express onlyのエクステンションレスハンドラーが無効になります。
<remove name="ExtensionlessUrl-ISAPI-4.0_32bit" />
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
<remove name="ExtensionlessUrl-Integrated-4.0" />
Web.configファイルを確認する必要があります。次の設定が存在する場合
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
</modules>
</system.webServer>
次に、ExtensionlessUrlHandlerハンドラーを削除した後、すべてがまだ機能している理由を説明できます。
デフォルトでは、runAllManagedModulesForAllRequestsはfalseです。つまり、IISは各リクエストをマネージ(.NET)モジュールに委任しません。URLのないURLを処理する方法を知っているコアモジュール名前はUrlRoutingモジュールであり、マネージ(ネイティブではない)モジュールです。つまり、リクエストを処理する機会がなく、IISはハンドラーマッピングに従って内部的に処理しようとしますところで、デフォルトの設定では、拡張子のないURLは静的リソースとして扱われるため、403.14ステータスコードで失敗します(ほとんどの場合)
runAllManagedModulesForAllRequestsがtrueの場合、IISに送信される要求はすべてのマネージモジュールに送信されます。UrlRoutingモジュールには、要求を処理してASP.NETに委任する変更があります。 MVC。
要約すると、ASP.NET MVCアプリケーションを実行する場合、2つのオプションがあります