Problema ao enviar dados JSON do JQuery para o método WCF REST

Estou tendo problemas para fazer com que o jquery publique alguns dados do json em um método de descanso que tenho no meu serviço WCF.

No lado do WCF, aqui está o contrato de operação:

[OperationContract]
[WebInvoke(Method = "POST",
           BodyStyle = WebMessageBodyStyle.Bare,
           RequestFormat = WebMessageFormat.Json,
           ResponseFormat = WebMessageFormat.Json,
           UriTemplate = "PostSomething")]
MyResult PostSomething(MyRequest request);

ambosMyResult eMyRequest estão marcados com todo o necessárioDataContract eDataMember atributos e serviço está expondo o ponto de extremidade WebHttp.

No lado do JQuery, aqui está minha chamada de função:

var jsonStr = JSON.stringify(reqObj);

$.ajax({
    type: "POST",
    dataType: "json",
    url: "http://localhost/MyService/PostSomething",
    contentType: "application/json; charset=utf-8",
    data: jsonStr,
    success: function (html) {
        alert(html);
    }
});

essa solicitação nunca alcança meu método (eu sempre obtenho um método 405 não permitido), e, olhando para Charles, a solicitação é assim:

OPTIONS /MyService/PostSomething HTTP/1.1
Host: localhost
Cache-Control: max-age=0
Access-Control-Request-Method: POST
Origin: null
Access-Control-Request-Headers: Content-Type, Accept
Accept: */*
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.237 Safari/534.10
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-GB,en-US;q=0.8,en;q=0.6
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3

algumas coisas que são estranhas sobre isso:

o método é OPTIONS não POSTo tipo de conteúdo (em outra guia) mostratext/html; charset=UTF-8 em vez de jsonos dados JSON não são para onde serem vistos

No entanto, se eu modificar a solicitação em Charles para que seus cabeçalhos sejam semelhantes à soluçãoaqui, então tudo funciona:

POST /MyService/PostSomething HTTP/1.1
Content-Type: application/json; charset=utf-8
Host: localhost
Content-Length: 152

{"Id":"", "Name":"testspot","Description":"test" } 

olhando para tutoriais e outras perguntas aqui, outras pessoas conseguiram que o JQuery publicasse em um método WCF REST como este, e estou sem saber o que estou fazendo de errado aqui ..

oh, para colocar um pouco de contexto, este é um serviço WCF 4 e estou usando o JQuery 1.4.4.

Obrigado,

ATUALIZAR:

Depois de mais algumas leituras e obrigado a Darrel por me indicar as especificações entre domínios, consegui ir um pouco mais longe ao fazer algumas pequenas alterações no meu serviço, na interface de serviço:

[OperationContract]
[WebInvoke(Method = "*",
           BodyStyle = WebMessageBodyStyle.Bare,
           RequestFormat = WebMessageFormat.Json,
           ResponseFormat = WebMessageFormat.Json,
           UriTemplate = "PostSomething")]
MyResult PostSomething(MyRequest request);

e na implementação, preciso verificar se os pedidos recebidos são para OPTIONS e, nesse caso, retornar alguns cabeçalhos em vez de fazer o trabalho pretendido:

if (WebOperationContext.Current.IncomingRequest.Method == "OPTIONS")
{
    WebOperationContext.Current.OutgoingResponse.Headers.Add("Access-Control-Allow-Origin", "*");
    WebOperationContext.Current.OutgoingResponse.Headers.Add("Access-Control-Allow-Methods", "POST");
    WebOperationContext.Current.OutgoingResponse.Headers.Add("Access-Control-Allow-Headers", "Content-Type, Accept");

    return null;
}

o método é chamado duas vezes, na primeira vez em que o servidor retorna nulo, mas adiciona alguns cabeçalhos ao cliente e, em seguida, a solicitação real é feita com POST como método, e o servidor segue em frente e lida com a solicitação normalmente.

questionAnswers(5)

yourAnswerToTheQuestion