Restful WCF错误请求错误

时间:2011-06-20 15:16:15

标签: wcf json rest

我有一个简单的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 个答案:

答案 0 :(得分:1)

您的内容类型为“application / jason; charset = utf-8”。 JSON的MIME类型是“application / json”(没有'a')。当我发送初始标头时(这是在您调用GetRequestStream时完成),这可能是我的原因,因为WCF服务无法识别内容类型并立即拒绝请求。