WCF - Опубликовать объект JSON

Я пытаюсь отправить JSON в службу WCF. Объект json содержит массив. Мне интересно, как правильно связать мой контракт с данными. Если кто-то может дать мне указатель здесь, я был бы очень признателен. В настоящее время моя корзина пуста

Вот как выглядит мой сервисный интерфейс:

public interface IService
 {

[OperationContract]
 [WebInvoke(UriTemplate = "/cart", Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, RequestFormat = WebMessageFormat.Json,ResponseFormat = WebMessageFormat.Json)]
 Ship GetShipInfo( Cart cart, string Website);
 }

[DataContract]
 public class Cart
 {
 [DataMember]
 public Int32 ProductID { get; set;}
 [DataMember]
 public decimal ItemPrice { get; set; }
 [DataMember]
 public Int16 Qty { get; set; }
 [DataMember]
 public String SizeWidth { get; set; }
 }

Мой клиент звонит следующим образом

ЗВОНОК КЛИЕНТА

using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Web;
 using System.Web.UI;
 using System.Web.UI.WebControls;
 using System.Runtime.Serialization.Json;
 using System.Net;
 using System.IO;

public partial class _Default : System.Web.UI.Page
 {
 protected void Page_Load(object sender, EventArgs e)
 {

DataContractJsonSerializer obj = new DataContractJsonSerializer(typeof(string));
 Cart cart = new Cart{ ProductID = 1000, ItemPrice = Convert.ToDecimal(32.50), Qty = 1, SizeWidth = “6M” };
 WebClient Proxy1 = new WebClient();
 Proxy1.Headers["Content-type"] = “application/json”;
 MemoryStream ms = new MemoryStream();
 DataContractJsonSerializer serializerToUplaod = new DataContractJsonSerializer(typeof(Cart));
 serializerToUplaod.WriteObject(ms, cart);

 byte[] data = Proxy1.UploadData(“http://localhost:54897/IphoneService.svc/cart”, “POST”, ms.ToArray());
 Stream stream = new MemoryStream(data);
 obj = new DataContractJsonSerializer(typeof(Ship));
 var Ship = obj.ReadObject(stream) as Ship;

}

public class Ship
 {
 public Decimal SecondDay { get; set; }
 public Decimal NextDay { get; set; }
 }

public class Cart
 {

public Int32 ProductID { get; set; }

public Decimal ItemPrice { get; set; }

public Int16 Qty { get; set; }

public String SizeWidth { get; set; }
 }

}

Мой JSON выглядит так

{"cart":
[
{"ProductID":2957,
"Qty":1,
"ItemPrice":60,
"SizeWidth":"5M"}
]
}
 Chris Emerson21 февр. 2018 г., 14:01
Я тоже боролся с этим (связанный пост и другие материалы здесь):stackoverflow.com/a/48906303/826308

Ответы на вопрос(1)

Решение Вопроса

ующим образом из Fiddler:

POST http://localhost:54897/IphoneService.svc/cart HTTP 1.1
Content-Type: application/json
Host: localhost

{"cart":{"ProductId":1,"ItemPrice":60,"Qty":1,"SizeWidth":"5M"},"Website":"sample website"}

Ответ в JSON будет выглядеть следующим образом:

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 30

{"SecondDay":5.0, "NextDay":7.0}

Ваш ответ на вопрос