C#RestSharp POST Body使用模型

时间:2017-06-29 13:18:55

标签: c# json wcf datetime restsharp

我刚刚使用C#开始使用RestSharp。

我在执行以下方案时遇到错误。

我有一个类要通过RestSharp发布到我的WCF服务。但是,我发现日期时间属性导致请求无法发布。

这是从Rest Sharp返回的错误消息。

  

服务器在处理请求时遇到错误。有关详细信息,请参阅服务器日志。

/*Model to POST to WCF*/
public class Ticket {
  public string Name {get;set;}
  public DateTime Time {get;set;}
}

/*WCF Api Endpoint*/
[OperationContract, WebInvoke(UriTemplate = "/placeTicket", Method 
= "POST", BodyStyle = WebMessageBodyStyle.Bare, RequestFormat = 
WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
NewTicket MakeNewTicket(Ticket requestParams);

/*Rest Sharp Operation*/
Ticket model = new Ticket();
model.Name = "Danial";
model.Time = new DateTime();

var client = new RestClient(url);
var request = new RestRequest("/MakeNewTicket", Method.POST);
request.RequestFormat = DataFormat.Json;
request.AddBody(model);

如果我将Time属性更改为字符串,它将完美运行。

我一直在努力解决这个问题。任何能够指导我的人都将不胜感激。

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。 我需要使用microsoft日期格式处理序列化发送到WCF服务的模型对象。

var client = new RestClient(url);
var request = new RestRequest("/placeTicket", Method.POST);
request.RequestFormat = DataFormat.Json;
var requestModel = JsonConvert.SerializeObject(model, new 
JsonSerializerSettings { DateFormatHandling = 
DateFormatHandling.MicrosoftDateFormat } )
request.AddBody(model);
var responseData = client.Execute(request).Content;

我不确定为什么在使用ISO 8601的日期格式标准传递纯模型时无法触发我的WCF服务。但是,如果我使用Microsoft JSON日期格式设置。它工作正常。