2012-06-22 16 views
11

Questo vale per ASP.NET in generale ma anche Web API.Gestori ASP.NET Verbi PUT/DELETE

Come è possibile gestire i verbi PUT/DELETE senza abilitando RAMMFAR (RunAllManagedModulesForAllRequests).

Non riesco a configurare il mapping del gestore all'interno di IIS poiché il mio sito è ospitato su un ruolo Web di Azure e le eventuali modifiche apportate non verranno mantenute.

risposta

19

@ risposta di Alexander mi ha messo sulla strada giusta. Ha dovuto aggiungere il seguente per ottenere DELETE/PUT gestite da ASP.NET:

<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

Aggiungi questo: "È possibile modificare IIS Express" applicationHost.config "nella cartella% userprofile% \ documents \ IISExpress \ config". " – StijnSpijker

+0

Ho avuto tutto mostrato sopra eccetto l'elemento . Quando l'ho aggiunto, ha iniziato a funzionare. –

+0

Questa versione è specifica? In IIS 8.0 causa un errore interno del server 500 – Typel

2

Hai già provato a consentire i verbi nella sezione System.WebServer in web.config?

Qualcosa di simile a questo:

<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

Sfortunatamente questo non sembra funzionare - Ho ancora un 404. –

+0

Si prega di aggiungere questo

+0

Questo non ha fatto alcuna differenza, ma la tua risposta mi ha chiesto di guardare in applicationHost. config. Ho pubblicato ciò che ha finito per funzionare per me. –

4

FWIW, abbiamo modificato i modelli di progetto API MVC/Web per consentire a tutti i verbi HTTP comuni utilizzando esattamente il meccanismo di cui sopra. Il cambiamento sarà disponibile nel prossimo drop ufficiale (che sarà RTM). Funzionerà automaticamente.

+0

Grazie Henrik, buono a sapersi. –

+0

Ho creato una nuova app MVC4 in VS 2012 e ho copiato le impostazioni da web.config. – Jason

+2

2 anni dopo, ancora non funziona per impostazione predefinita. lol. – Josh