我刚刚使用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属性更改为字符串,它将完美运行。
我一直在努力解决这个问题。任何能够指导我的人都将不胜感激。
答案 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日期格式设置。它工作正常。