これは、ASP.NET全般に適用されますが、WebAPIにも適用されます。
RAMMFAR(RunAllManagedModulesForAllRequests)を有効にせずにPUT/DELETE動詞を処理するにはどうすればよいですか。
サイトがAzureWebロールでホストされており、行った変更が保持されないため、IIS内でハンドラーマッピングを構成できません。
これは、ASP.NET全般に適用されますが、WebAPIにも適用されます。
RAMMFAR(RunAllManagedModulesForAllRequests)を有効にせずにPUT/DELETE動詞を処理するにはどうすればよいですか。
サイトがAzureWebロールでホストされており、行った変更が保持されないため、IIS内でハンドラーマッピングを構成できません。
@Alexanderの答えは私を正しい軌道に乗せました。ASP.NETでDELETE/PUTを処理するには、次を追加する必要がありました。
<system.webServer>
<modules runAllManagedModulesForAllRequests="false"/>
<handlers>
<remove name="ExtensionlessUrl-Integrated-4.0" />
<add name="ExtensionlessUrl-Integrated-4.0"
path="*."
verb="GET,HEAD,POST,DEBUG,DELETE,PUT"
type="System.Web.Handlers.TransferRequestHandler"
preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
</system.webServer>
FWIW、MVC / Web APIプロジェクトテンプレートを変更して、上記のメカニズムを正確に使用するすべての一般的なHTTP動詞を許可します。変更は、次の公式ドロップ(RTMになります)で利用可能になります。これはデフォルトで機能します。
System.WebServer
web.configのセクションで動詞を許可しようとしましたか?
このようなもの:
<System.WebServer>
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<add name="ExtensionlessUrlHandler-Integrated-4.0"
path="*."
verb="GET,HEAD,POST,DEBUG,PUT,DELETE"
modules="IsapiModule"
scriptProcessor="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll"
resourceType="Unspecified"
requireAccess="Script"
preCondition="classicMode,runtimeVersionv4.0,bitness64"
responseBufferLimit="0" />
</handlers>
</System.WebServer>