Estoy trabajando en una aplicación MVC. En mi borrador original del servicio tenía este método en uno de mis controladores:Habilitar solicitudes Http PUT en .NET MVC
[AcceptVerbs(HttpVerbs.Post)]
[ActionName("UpdateRelationship")]
public ActionResult UpdateRelationship(string aParameter)
Y eso funcionó bien. En la última revisión, me pidieron que cambie esto en una solicitud PUT para diferenciarlo de un mecanismo de agregación similar que utiliza la publicación. Así que lo cambié a esto:
[AcceptVerbs(HttpVerbs.Put)]
[ActionName("UpdateRelationship")]
public ActionResult UpdateRelationship(string aParameter)
Y de repente me estoy poniendo un 404 en mis solicitudes, todos ellos de tan solo cambiando las AcceptVerbs. A juzgar por el error, parece que IIS está intentando enrutar la solicitud como una página web estándar en lugar de utilizar la url de extensión de MVC sin extensión.
Buscando en Google esto parece que una causa común es que los navegadores no permiten las solicitudes PUT, pero no estoy usando un navegador para probar esto - Estoy usando Fiddler. Entonces no debería haber ningún problema allí. También creo que los ajustes correctos ya están en el web.config:
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true">
<remove name="WebDAVModule" />
</modules>
<handlers>
<remove name="UrlRoutingHandler" />
<remove name="MvcHttpHandler" />
<remove name="WebDAV" />
<add name="MvcHttpHandler" preCondition="integratedMode" verb="*" path="*.mvc" type="System.Web.Mvc.MvcHttpHandler, System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</handlers>
<security>
<requestFiltering>
<verbs>
<add verb="PUT" allowed="true" />
</verbs>
</requestFiltering>
</security>
</system.webServer>
Entonces, ¿qué me he perdido?
EDITAR: Este código funciona en la máquina de un compañero. Entonces parece que mi configuración local de IIS fue la culpa. Todavía estoy en una pérdida para explicar lo que necesito cambiar, ¿alguna idea?
Saludos, Matt
¿Está utilizando IIS Express o IIS de pura sangre? Si es de sangre pura, ¿en qué SO estás? –
Es el que viene incorporado en Windows 7 pro, así que supongo que es expreso. –