Restful WCF ошибка неправильного запроса - PullRequest
0 голосов
/ 20 июня 2011

У меня есть простой сервис resftul wcf.Файл .svc выглядит следующим образом

<%@ ServiceHost Service="NameSpace.RestfulService" Factory="System.ServiceModel.Activation.WebServiceHostFactory" %>

Объявление метода интерфейса

    [OperationContract]
    [WebInvoke(Method = "POST", UriTemplate = "test2", RequestFormat =  WebMessageFormat.Json,ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare)]
        List<MyObj> Test2(MyObj test);

Реализация метода

 public List<MyObj> Test2(MyObj test)
    {
        return new List<MyObj>() { new MyObj() { MyObjId = "1", RowVersion = 1 }, new MyObj() { MyObj= "2", RowVersion = 2 } };
    }

Метод на клиенте wpf для вызова службы

DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(MyObj));
        MemoryStream ms = new MemoryStream();
        serializer.WriteObject(ms, new MyObj() { MyObjId = "A", RowVersion = 1 });
        string jason = Encoding.Default.GetString(ms.ToArray());

        //get a handle to the request stream to write data to it    
        WebRequest myRequest = WebRequest.Create("http://localhost/MyService.svc/test2");
        myRequest.Method = "POST";
        myRequest.ContentType = "application/jason; charset=utf-8";

        StreamWriter sw = new StreamWriter(myRequest.GetRequestStream());
        sw.Write(jason);
        sw.Close();

        //get a handle to the response stream from the server to read the response
        WebResponse myResponse = myRequest.GetResponse();
        DataContractJsonSerializer RecData = new DataContractJsonSerializer(typeof(List<MyObj>));

        var result = (List<MyObj>)RecData.ReadObject(myResponse.GetResponseStream());

Когда я пытаюсь получить RequestStream "myRequest.GetRequestStream ()", он сообщает об ошибке неверного запроса 400. Любая идея, что может быть причиной этой ошибки?

1 Ответ

1 голос
/ 20 июня 2011

Ваш тип контента "application / jason; charset = utf-8". MIME-тип JSON - это «application / json» (нет «a»). Вероятно, именно поэтому это 400, когда вы отправляете начальные заголовки (что делается при вызове GetRequestStream), потому что служба WCF не распознает тип содержимого и сразу отклоняет запрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...