当前位置: 代码迷 >> Web Service >> WCF REST的POST时候报400异常是咋回事
  详细解决方案

WCF REST的POST时候报400异常是咋回事

热度:196   发布时间:2016-05-02 02:21:46.0
WCF REST的POST时候报400错误是怎么回事
本帖最后由 dropping 于 2012-12-17 16:16:33 编辑
Get方法可以正常返回值,POST方法提示:远程服务器返回错误: (400) 错误的请求。
服务端代码如下:
    [ServiceContract]
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
    [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
    public class RestService
    {
        [WebInvoke(UriTemplate = "Create", Method = "POST")]
        public string Create(string s)
        {
            return s;
        }

        [WebGet(UriTemplate = "Get?id={id}",RequestFormat = WebMessageFormat.Json)]
        public SampleItem Get(string id)
        {
            return new SampleItem {Id = 1, StringValue = "test"};
        }
    }

客户端调用代码如下:
WebClient webClient = new WebClient();
webClient.Encoding = System.Text.Encoding.UTF8;
webClient.Headers[HttpRequestHeader.ContentType] = "application/json";
string tt = webClient.DownloadString("http://localhost:7000/RestService/Get?id=tt");
Console.WriteLine(tt);

WebClient client=new WebClient();
client.Encoding = System.Text.Encoding.UTF8;
client.Headers[HttpRequestHeader.ContentType] = "application/json";
//下一行报错
client.UploadString(new Uri("http://localhost:7000/RestService/Create", UriKind.Absolute), "POST", "test");

------解决方案--------------------
建议检查下配置
------解决方案--------------------
string post 比较特殊的。要加上 [FormBody] 特性。
  相关解决方案