ASP.NET WebAPI JSON Binding Sensibilidad a Casos

La actualización de ASP.NET WebAPI Beta a RC ha proporcionado cierta emoción y mucha frustración. He podido resolver la mayoría de los problemas, pero el que me está mordiendo en este momento es la distinción entre mayúsculas y minúsculas de los datos de solicitud JSON.

El formateador utilizado para las solicitudes JSON (que de manera predeterminada es un formateador JSON.NET) parece ser sensible a las mayúsculas y minúsculas, mientras que el formateador utilizado para los datos con formato urlencoded no lo hace. ¿Hay alguna forma de configurar las solicitudes JSON para utilizar un formateador que no distinga mayúsculas y minúsculas?

Aquí hay un ejemplo simple para ilustrar el problema que tengo con las solicitudes 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>

DO#

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);
    }
}

He proporcionado un comentario en la línea donde se proporcionan los datos JSON. Preferiría no romper la convención con mis objetos de JavaScript por parte de los miembros de la propiedad de la carcasa adecuada y, desde luego, no quiero romper la convención al reducir la carcasa de mis propiedades de C #. ¿Alguna idea?

Respuestas a la pregunta(2)

Su respuesta a la pregunta