2012-06-22 26 views
11

これは一般的にASP.NETにもWeb APIにも当てはまります。ASP.NETハンドルPUT/DELETE動詞

PUT/DELETE動詞を、なしで処理するにはどうすればRAMMFAR(RunAllManagedModulesForAllRequests)を有効にできますか。

私のサイトがAzure Webロール上でホストされているため、IISでハンドラマッピングを設定できません。変更は永続化されません。

答えて

19

アレキサンダーの答え@は、右のトラックに私を置きます。 ASP.NETによって処理/ PUT、DELETE取得するために以下を追加する必要がありました:

<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> 
+0

これを追加してください: "%userprofile%\ documents \ IISExpress \ configフォルダ内の" applicationHost.config "というIIS Expressを変更することができます。" – StijnSpijker

+0

要素を除いて上記のすべてがありました。私がそれを加えたら、それは働き始めた。 –

+0

このバージョンは特定ですか? IIS 8.0では、500内部サーバーエラーが発生します – Typel

2

既にweb.configのSystem.WebServerセクションに動詞を許可しようとしましたか?

このような何か:

<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> 
+0

残念ながら、これは動作していないようです - 私はまだ404を取得します。 –

+0

これを追加してください

+0

それは何の違いもありませんでしたが、あなたの答えはapplicationHostで調べるように促しました。 config。私は私のために働いてしまったものを投稿しました。 –

4

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

+0

Henrikに感謝します。 –

+0

私はVS 2012で新しいMVC4アプリケーションを作成し、web.configの設定をコピーしました。 – Jason

+2

2年後、デフォルトではまだ動作しません。笑。 – Josh

関連する問題