【问题标题】:C# RestSharp POST Body using modelsC# RestSharp POST Body 使用模型
【发布时间】:2017-06-29 13:18:54
【问题描述】:

我刚开始使用 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 属性更改为字符串,它会完美运行。

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

【问题讨论】:

    标签: c# json wcf datetime restsharp


    【解决方案1】:

    我找到了解决方案。 我需要使用微软日期格式处理序列化发送到 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 日期格式设置。它工作正常。

    【讨论】:

      猜你喜欢
      • 2018-02-18
      • 1970-01-01
      • 1970-01-01
      • 2013-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-15
      • 2021-02-11
      相关资源
      最近更新 更多