Aquí está la configuración de enrutamiento en WebApiConfig.cs:¿Cómo se define el método PUT en el límite de enrutamiento solo para los métodos Put en el controlador sin parámetro?
config.Routes.MapHttpRoute(
name: "DefaultApiPut",
routeTemplate: "api/{controller}",
defaults: new { httpMethod = new HttpMethodConstraint(HttpMethod.Put) }
);
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { httpMethod = new HttpMethodConstraint(HttpMethod.Get, HttpMethod.Post, HttpMethod.Delete) }
);
Aquí está mi controlador:
public class MyController : ApiController {
[HttpPut]
public void Put()
{
//blah
}
}
alguna manera, cuando los clientes senta la solicitud PUT con la URL /api/myController/12345
, todavía se asigna al Put
método en MyController
, estoy esperando un error como recurso no encontrado.
¿Cómo forzar el método Put
solo aceptar la solicitud sin un parámetro?
¡Gracias de antemano!
Este código de ejemplo trabajado para mí, excepto que tenía que especificar restricciones como se muestra en la cuestión, es decir: las limitaciones: nueva {HTTPMethod = new HttpMethodConstraint (HTTPMethod .Obtener)} –
Hay dos clases HttpMethodConstraint en .net 4.5.1. Uno en System.Web.Routing y el otro en System.Web.Http.Routing. Requieren diferentes patrones de parámetros, uno acepta cadenas, el otro busca la enumeración. Aún no sé si tienen comportamientos diferentes más allá de eso. – Rozwel
@Rozwel gracias! Me estaba golpeando un poco la cabeza y no puedo convertir el error de cadena porque estaba usando system.web.routing not system.web.http.routing. – Matt