visual tutorial studio example ejemplo crear consumir c# .net asp.net-web-api

c# - tutorial - FromBody no vinculante parámetro de cadena



web api rest c# tutorial (2)

Tengo un problema similar a ASP.NET MVC 4 RC Web API Parameter Binding Issue , pero estoy tratando de resolverlo utilizando el atributo [FromBody].

Fiddler informa la siguiente solicitud (excluyendo bits irrelevantes como la cadena del agente de usuario)

PUT http://localhost:82/api/account/shoppinglistitems HTTP/1.1 Host: localhost:82 Connection: keep-alive Content-Length: 11 Origin: http://localhost:3000 Content-Type: application/x-www-form-urlencoded Accept: application/json, text/javascript, */*; q=0.01 query=apple

Mi acción de controlador es

[HttpPut] public ShoppingListItemWebModel CreateShoppingListItem([FromBody]string query) { // query is null }

Podría ajustar el parámetro en un tipo complejo, pero eso parece un truco para solucionar el problema. O podría poner la consulta en el URI, pero eso no se ajusta al patrón del resto de la API. ¿Es posible hacerlo de esta manera? Si es así, ¿dónde está mi error?


Si está utilizando AngularJS en lugar de jQuery, es posible que desee optar por la siguiente alternativa, ya que AngularJS utiliza el tipo de contenido application/json de manera predeterminada.

PUT http://localhost:82/api/account/shoppinglistitems HTTP/1.1 Host: localhost:82 Connection: keep-alive Content-Length: 7 Origin: http://localhost:3000 Content-Type: application/json Accept: application/json, text/javascript, */*; q=0.01 ''apple''

Observe que el valor está envuelto en comillas de cadena (ya sea simple o doble).


cambie su solicitud para ser

PUT http://localhost:82/api/account/shoppinglistitems HTTP/1.1 Host: localhost:82 Connection: keep-alive Content-Length: 11 Origin: http://localhost:3000 Content-Type: application/x-www-form-urlencoded Accept: application/json, text/javascript, */*; q=0.01 =apple

notar la falta de "consulta"