Le passage des données à partir d'un ajax de jquery demande à un service wcf échoue désérialisation?

J'utilise le code suivant pour appeler un service wcf. Si je l'appelle un (test) méthode qui ne prend pas de paramètres, mais retourne une chaîne de caractères, il fonctionne très bien. Si j'ajoute un paramètre à ma méthode, j'obtiens une erreur bizarre:

{"ExceptionDetail":{"HelpLink":null,"InnerException":null,"Message":"Le jeton '\"' a été prévu, mais trouvé "'.","StackTrace":" au Système.Xml.XmlExceptionHelper.ThrowXmlException(XmlDictionaryReader lecteur, String res, String arg1, Chaîne arg2, Chaîne arg3)\u000d\u000a au Système.Xml.XmlExceptionHelper.ThrowTokenExpected(XmlDictionaryReader lecteur, Chaîne prévu, Char trouvé)\u000d\u000a au Système.Moment de l'exécution.La sérialisation.Json.XmlJsonReader.ParseStartElement()\u000d\u000a au Système.Moment de l'exécution.La sérialisation.Json.XmlJsonReader.Read()\u000d\u000a au Système.ServiceModel.Répartiteur.DataContractJsonSerializerOperationformatter.DeserializeBodyCore(XmlDictionaryReader lecteur, Object[] paramètres, Boolean isRequest)\u000d\u000a au Système.ServiceModel.Répartiteur.DataContractJsonSerializerOperationformatter.DeserializeBody(XmlDictionaryReader lecteur, MessageVersion version, Chaîne d'action, MessageDescription messageDescription, Object[] paramètres, Boolean isRequest)\u000d\u000a au Système.ServiceModel.Répartiteur.OperationFormatter.DeserializeBodyContents(Message, Object[] paramètres, Boolean isRequest)\u000d\u000a au Système.ServiceModel.Répartiteur.OperationFormatter.DeserializeRequest(Message, Object[] paramètres)\u000d\u000a au Système.ServiceModel.Répartiteur.DemultiplexingDispatchMessageFormatter.DeserializeRequest(Message, Object[] paramètres)\u000d\u000a au Système.ServiceModel.Répartiteur.UriTemplateDispatchFormatter.DeserializeRequest(Message, Object[] paramètres)\u000d\u000a au Système.ServiceModel.Répartiteur.CompositeDispatchFormatter.DeserializeRequest(Message, Object[] paramètres)\u000d\u000a au Système.ServiceModel.Répartiteur.DispatchOperationRuntime.DeserializeInputs(MessageRpc& rpc)\u000d\u000a au Système.ServiceModel.Répartiteur.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc)\u000d\u000a au Système.ServiceModel.Répartiteur.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc)\u000d\u000a au Système.ServiceModel.Répartiteur.ImmutableDispatchRuntime.ProcessMessage4(MessageRpc& rpc)\u000d\u000a au Système.ServiceModel.Répartiteur.ImmutableDispatchRuntime.ProcessMessage3(MessageRpc& rpc)\u000d\u000a au Système.ServiceModel.Répartiteur.ImmutableDispatchRuntime.ProcessMessage2(MessageRpc& rpc)\u000d\u000a au Système.ServiceModel.Répartiteur.ImmutableDispatchRuntime.ProcessMessage1(MessageRpc& rpc)\u000d\u000a au Système.ServiceModel.Répartiteur.MessageRpc.Processus(Boolean isOperationContextSet)","Type":"System.Xml.XmlException"},"ExceptionType":"System.Xml.XmlException","Message":"Le jeton '\"' a été prévu, mais trouvé "'.","StackTrace":" au Système.Xml.XmlExceptionHelper.ThrowXmlException(XmlDictionaryReader lecteur, String res, String arg1, Chaîne arg2, Chaîne arg3)\u000d\u000a au Système.Xml.XmlExceptionHelper.ThrowTokenExpected(XmlDictionaryReader lecteur, Chaîne prévu, Char trouvé)\u000d\u000a au Système.Moment de l'exécution.La sérialisation.Json.XmlJsonReader.ParseStartElement()\u000d\u000a au Système.Moment de l'exécution.La sérialisation.Json.XmlJsonReader.Read()\u000d\u000a au Système.ServiceModel.Répartiteur.DataContractJsonSerializerOperationformatter.DeserializeBodyCore(XmlDictionaryReader lecteur, Object[] paramètres, Boolean isRequest)\u000d\u000a au Système.ServiceModel.Répartiteur.DataContractJsonSerializerOperationformatter.DeserializeBody(XmlDictionaryReader lecteur, MessageVersion version, Chaîne d'action, MessageDescription messageDescription, Object[] paramètres, Boolean isRequest)\u000d\u000a au Système.ServiceModel.Répartiteur.OperationFormatter.DeserializeBodyContents(Message, Object[] paramètres, Boolean isRequest)\u000d\u000a au Système.ServiceModel.Répartiteur.OperationFormatter.DeserializeRequest(Message, Object[] paramètres)\u000d\u000a au Système.ServiceModel.Répartiteur.DemultiplexingDispatchMessageFormatter.DeserializeRequest(Message, Object[] paramètres)\u000d\u000a au Système.ServiceModel.Répartiteur.UriTemplateDispatchFormatter.DeserializeRequest(Message, Object[] paramètres)\u000d\u000a au Système.ServiceModel.Répartiteur.CompositeDispatchFormatter.DeserializeRequest(Message, Object[] paramètres)\u000d\u000a au Système.ServiceModel.Répartiteur.DispatchOperationRuntime.DeserializeInputs(MessageRpc& rpc)\u000d\u000a au Système.ServiceModel.Répartiteur.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc)\u000d\u000a au Système.ServiceModel.Répartiteur.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc)\u000d\u000a au Système.ServiceModel.Répartiteur.ImmutableDispatchRuntime.ProcessMessage4(MessageRpc& rpc)\u000d\u000a au Système.ServiceModel.Répartiteur.ImmutableDispatchRuntime.ProcessMessage3(MessageRpc& rpc)\u000d\u000a au Système.ServiceModel.Répartiteur.ImmutableDispatchRuntime.ProcessMessage2(MessageRpc& rpc)\u000d\u000a au Système.ServiceModel.Répartiteur.ImmutableDispatchRuntime.ProcessMessage1(MessageRpc& rpc)\u000d\u000a au Système.ServiceModel.Répartiteur.MessageRpc.Processus(Boolean isOperationContextSet)"}

Mon jquery ressemble à ça, mais j'ai essayé de changer les données réelles qui j'envoie une chaîne json sérialisé (comme vous pouvez le voir) à un pur objet json avec le même triste résultat.

$.ajax({
    type: "POST",
    contentType: "application/json; charset=utf-8",
    url: "ajax/Statistics.svc/Get7DaysStatistics",
    dataType: "json",
    data: "{'customerId': '2'}",
    timeout: 10000,
    success: function(obj) { updateStatistics(obj.d); },
    error: function(xhr) {
        if (xhr.responseText)          
            $("body").html(xhr.responseText);
        else
            alert('unknown error');
        return;
    }
});

Le service wcf ressemble à ceci:

    [SuppressMessage("Microsoft.Performance", "CA1822:MarkMembersAsStatic"), OperationContract]
    public string Get7DaysStatistics(string customerId)
    {
        Debug.WriteLine(customerId);
        return "Test done";
    }

Qu'il est placé dans une classe avec les attributs suivants:

[ServiceContract(Namespace = "")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]

Je ne vais pas lister la configuration dans le web.config pour garder ce long message "court", mais je peux le poster si quelqu'un pense qu'ils peuvent l'utiliser - je veux juste souligner que je PEUX appeler une méthode et d'obtenir un résultat de chaîne ou même un objet json, je peux lire d'aussi longtemps que je NE passe PAS toutes les données pour le service wcf.