La actualización de ASP.NET WebAPI Beta a RC ha proporcionado cierta cantidad de emoción y una gran frustración. He podido resolver la mayoría de los problemas, pero el que me está afectando en este momento es la sensibilidad a mayúsculas y minúsculas de los datos de solicitud de JSON.ASP.NET WebAPI JSON Binding Case-Sensitivity
El formateador utilizado para las solicitudes JSON (que de forma predeterminada es un formateador JSON.NET) parece ser sensible a mayúsculas y minúsculas, mientras que el formateador utilizado para los datos de urlencoded no lo hace. ¿Hay alguna manera de configurar las solicitudes JSON para usar un formateador insensible a mayúsculas y minúsculas?
Aquí está un ejemplo simple para ilustrar el problema que estoy teniendo con las peticiones JSON:
HTML/JavaScript
<button id="tester">Click here!</button>
<script type="text/javascript">
$(function() {
$("#tester").on("click", function() {
$.ajax({
type: "POST",
url: "/Api/Test/Index/" + 168,
data: ko.toJSON({ key: 123, value: "test value" }), // THIS FAILS
// Key: 123, Value: "test value" <- BUT THIS WORKS
contentType: "application/json; charset=utf-8",
statusCode: {
200: function() {
$("body").append("<p>Success</p>");
},
400: function() {
$("body").append("<p>Failure</p>");
}
}
}).always(function() {
$("body").append("<hr />");
});
});
});
</script>
C#
public class TestController : ApiController
{
public HttpResponseMessage Index(int? id, KeyValuePair<int, string> test)
{
if (id != 168 || test.Key != 123 || test.Value != "test value")
return Request.CreateResponse(HttpStatusCode.BadRequest);
return Request.CreateResponse(HttpStatusCode.OK);
}
}
tengo proporcionó un comentario en la línea donde se proporcionan los datos JSON. Prefiero no romper la convención con mis objetos de JavaScript por los miembros de la propiedad de la carcasa adecuada y ciertamente no quiero romper la convención por una carcasa inferior de mis propiedades de C#. ¿Alguna idea?
estoy un poco confundido aquí. Envía sus datos dentro de una solicitud POST, es decir, dentro de un cuerpo de solicitud. Pero en la documentación de HTTP se dice que los campos de encabezado (y los valores) se consideran insensibles a las mayúsculas y minúsculas, y no hay nada sobre el cuerpo ... ¿Por qué crees que "no es el comportamiento de los datos en formato urlencoded", me pregunto? – raina77ow
Consulte [esta discusión] (http://groups.google.com/group/soundcloudapi/browse_thread/thread/c266c0d2efa88fbb/9ad3969dde919cba), por ejemplo. – raina77ow
@ raina77ow Esto no es realmente una pregunta acerca de la especificación HTTP sino del comportamiento del formateador JSON.NET utilizado por ASP.NET WebAPI RC. El formateador FormUrl parece no distinguir entre mayúsculas y minúsculas, mientras que el formateador JSON.NET * es * sensible a mayúsculas y minúsculas. –