Почтовый запрос HTTP-сервера C# анализирует тело как нулевое

#c# #rest #wcf #post

#c# #остальное #wcf #Публикация

Вопрос:

У меня есть интерфейс ServiceContract

 [ServiceContract] public interface IService {  [OperationContract]  [WebInvoke(Method = "POST",  ResponseFormat = WebMessageFormat.Json,  BodyStyle = WebMessageBodyStyle.WrappedRequest,  RequestFormat = WebMessageFormat.Json,  UriTemplate = "print")]  [return: MessageParameter(Name = "Data")]  int Print(PrintOrder orden); }  

служба:

 public class Service : IService  {  public int Print(PrintOrder orden)  {  try  {  Console.WriteLine("received order",orden.Body,orden.PrinterName);  return 0;  }  catch (Exception ex)  {  Console.WriteLine(ex.Message,ex.StackTrace);  return 1;  }  }  }  

И контракт на передачу данных

 [DataContract]  public class PrintOrder  {  [DataMember]  public string PrinterName{ get; set; }  [DataMember]  public string Body { get; set; }  }  

проблема в том, что мой метод обслуживания Print всегда получает значение null PrintOrder в качестве параметра каждый раз, когда я отправляю запрос POST с телом JSON:

 {  "PrinterName":"EPSON 1200",  "Body":"test body" }  

Ответ №1:

Изменено BodyStyle = WebMessageBodyStyle.WrappedRequest, на BodyStyle = WebMessageBodyStyle.Bare,