如何将参数传递给WCF post方法(一个restful服务)

我正在开发基于WCFrest的服务。 我在我的服务中编写了Get和Post方法,并且当我输入URL(JSON格式)时,Get方法能够工作(获取数据)。

问题是,当我尝试对POST方法执行相同操作时,该URL正在导航到其他页面“找不到页面…”。

我知道POST方法需要表单提交来处理请求。

出于这个原因,我尝试了chrome扩展(Simple Rest客户端,Advanced Rest客户端,Post man rest客户端)和Fiddler。

这里我发布我的服务方法 – Get方法(接口方法声明)。

[OperationContract] [WebInvoke(Method = "GET", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare, UriTemplate = "GetCategoryTypes/")] List GetCategoryTypes(); 

这是我的POST方法

 [OperationContract] [WebInvoke(Method = "POST", UriTemplate = "AddOrders/", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedRequest)] int AddOrders(decimal amount, int tableID, DateTime orderDate, int isActive); 

这是我的服务的web.config文件。

                                                     

我不确定我的方法构造(POST方法)是否有任何错误,或者我需要测试它的方式。

我需要所有专家的帮助,过去2天我正在与这个问题作斗争,我来到这里发布它。

任何帮助高度赞赏。

经过多次试验和许多事情,我得到了工作解决方案。 在这里,我发布了我为POST方法所做的工作。

  [OperationContract] [WebInvoke(Method = "POST", UriTemplate = "AddOrders", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json,BodyStyle = MessageBodyStyle.Bare)] int AddOrders(RequestData orderRequestData); 

这是在操作合同中实现的。

客户申请: –

  WebClient WC = new WebClient(); WC.Headers.Add("Content-Type", "application/json"); WC.Encoding = Encoding.UTF8; MemoryStream MS = new MemoryStream(); DataContractJsonSerializer JSrz = new DataContractJsonSerializer(typeof(RequestData)); JSrz.WriteObject(MS, order); string data = Encoding.UTF8.GetString(MS.ToArray(), 0, (int)MS.Length); byte[] res1 = WC.UploadData("http://localhost/EMCService/Service2.svc/AddOrders", "POST",MS.ToArray()); MS = new MemoryStream(res1); JSrz = new DataContractJsonSerializer(typeof(int)); int result = (int)JSrz.ReadObject(MS); 

我没有进行任何配置设置,仍然使用web.config的旧设置,我在上面的问题中发布了它,它正在工作。