2012-06-22 19 views
11

Esto se aplica a ASP.NET en general, pero también a la API web.ASP.NET Manejar verbos PUT/DELETE

¿Cómo podemos manejar los verbos PUT/DELETE sin habilitando RAMMFAR (RunAllManagedModulesForAllRequests).

No puedo configurar la asignación del controlador dentro de IIS ya que mi sitio está alojado en una función web de Azure y los cambios que realice no se conservarán.

Respuesta

19

@ respuesta de Alexander me puso en el camino correcto. Tuvo que añadir lo siguiente para obtener BORRAR/PUT manejado por 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

Agregue esto: "Puede modificar el IIS Express" applicationHost.config "en la carpeta% userprofile% \ documents \ IISExpress \ config". – StijnSpijker

+0

Tenía todo lo mostrado arriba excepto el elemento . Cuando agregué eso, comenzó a funcionar. –

+0

¿Es esta versión específica? En IIS 8.0 causa un error interno del servidor 500 – Typel

2

¿Intenté ya permitir los verbos en System.WebServer sección en web.config?

Algo como esto:

<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

Desafortunadamente esto no parece funcionar - Todavía obtengo un 404. –

+0

Por favor, agregue este

+0

Eso no hizo ninguna diferencia, pero su respuesta me instó a buscar en applicationHost. config. He publicado lo que terminó trabajando para mí. –

4

Fwiw, hemos modificado las plantillas de proyecto API MVC/Web para permitir que todos los verbos HTTP comunes usando exactamente el mecanismo anterior. El cambio estará disponible en la próxima caída oficial (que será RTM). Eso funcionará por defecto.

+0

Gracias Henrik, es bueno saberlo. –

+0

Creé una nueva aplicación MVC4 en VS 2012 y copié la configuración de web.config. – Jason

+2

2 años después, todavía no funciona por defecto. lol. – Josh

Cuestiones relacionadas