12

これは、ASP.NET全般に適用されますが、WebAPIにも適用されます。

RAMMFAR(RunAllManagedModulesForAllRequests)を有効にせずにPUT/DELETE動詞を処理するにはどうすればよいですか。

サイトがAzureWebロールでホストされており、行った変更が保持されないため、IIS内でハンドラーマッピングを構成できません。

4

3 に答える 3

19

@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>
于 2012-06-22T14:42:54.403 に答える
4

FWIW、MVC / Web APIプロジェクトテンプレートを変更して、上記のメカニズムを正確に使用するすべての一般的なHTTP動詞を許可します。変更は、次の公式ドロップ(RTMになります)で利用可能になります。これはデフォルトで機能します。

于 2012-06-24T02:42:00.770 に答える
2

System.WebServerweb.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>
于 2012-06-22T13:48:38.203 に答える