que tienen un controlador que sólo acepta un post en este URL:¿Cómo se usa una restricción personalizada con HttpMethodConstraint en el enrutamiento ASP.NET MVC?
POST http://server/stores/123/products
El puesto debe ser de tipo de contenido application/json
, así que esto es lo que tengo en mi tabla de enrutamiento:
routes.MapRoute(null,
"stores/{storeId}/products",
new { controller = "Store", action = "Save" },
new {
httpMethod = new HttpMethodConstraint("POST"),
json = new JsonConstraint()
}
);
donde JsonConstraint
es:
public class JsonConstraint : IRouteConstraint
{
public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
{
return httpContext.Request.ContentType == "application/json";
}
}
Cuando utilizo la ruta, aparece un 405 Prohibido:
The HTTP verb POST used to access path '/stores/123/products' is not allowed
Sin embargo, si se quita la restricción json = new JsonConstraint()
, que funciona bien. ¿Alguien sabe lo que estoy haciendo mal?
favor puede publicar su fragmento de jQuery? He realizado algunas pruebas adicionales y muestra que ContentType se muestra como "application/xml". –
Estoy usando un complemento de Firefox llamado 'REST Client' para probarlo. –