Estoy implementando un prototipo de API RESTful usando ASP.NET MVC y aparte de los errores ocasionales aquí y allá, he logrado todos los requisitos que establecí al inicio, además de que los llamadores pueden usar el X-HTTP-Method-Override
personalizado encabezado para anular el método HTTP.¿Es posible implementar X-HTTP-Method-Override en ASP.NET MVC?
Lo que me gustaría es que la petición siguiente ...
GET /someresource/123 HTTP/1.1
X-HTTP-Method-Override: DELETE
... sería enviado a mi método de control que implementa la funcionalidad DELETE
en lugar de la funcionalidad GET
para esa acción (suponiendo que hay varios métodos implementando la acción, y que están marcados con diferentes atributos [AcceptVerbs]
). Por lo tanto, teniendo en cuenta los dos métodos siguientes, me gustaría que la mencionada solicitud para ser enviados a la segunda:
[ActionName("someresource")]
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult GetSomeResource(int id) { /* ... */ }
[ActionName("someresource")]
[AcceptVerbs(HttpVerbs.Delete)]
public ActionResult DeleteSomeResource(int id) { /* ... */ }
¿Alguien sabe si esto es posible? ¿Y cuánto trabajo sería hacer eso ...?
Tuve que copiar el código de AcceptVerbsAttribute e implementar el mío, ya que desafortunadamente está sellado, pero el enfoque funciona perfectamente y es agradable y simple, ¡así que parece que obtienes los 300 puntos! –
hi levi, sin embargo, mi ASP.net IIS o MVC niega la solicitud DELETE y PUT, ¿hay alguna forma de hacerlo funcionar? Intenté poner Allow: PUT, DELETE en el encabezado IIS Allow, pero no funcionará ... – DucDigital
Duc, sé que ha sido una MUCHA LARGA VEZ, pero compruebe si WebDav está instalado. Si es así, desinstálalo. De lo contrario, interceptará tus solicitudes PUT y DELETE. –