Я использую Asp.Net Core 2.2 WebApi и WinForm Client для отправки запросов. Я использую библиотеку RestSharp в качестве Restclient. Кажется, что значения свойств с типом DateTime неправильно обрабатываются в WebApi Controller.
Source DateTime:
Target DateTime:
Код клиента:
internal virtual void Add(T1 businessObject)
{
RestRequest request = new RestRequest(ManagementControllerName + @"/" + AddActionPrefix, Method.POST);
request.RequestFormat = DataFormat.Json;
request.AddJsonBody(businessObject);
var response = Globals.ServiceStackClient.Execute(request);
if (!response.IsSuccessful)
{
var ex = JsonConvert.DeserializeObject<AppExceptionMessage>(response.Content);
throw new ClientSideException(ex);
};
}
Бизнес-объект:
public class DmPresentationBo : CatalogBo
{
public DmPresentationBo()
{
}
public string DocItemNumber { get; set; }
public DateTime DocItemDt { get; set; }
}
Контроллер WebApi:
[HttpPost]
[Route("Add")]
public ActionResult<T1> Add([FromBody] T1 businessObject)
{
try
{
CurrentDbStorage.StartTransaction();
var mainCmd = CurrentDbStorage.GenerateCrudInsertCommand(businessObject);
mainCmd.ExecuteNonQuery();
ProcessPostAdd(businessObject);
CurrentDbStorage.CommitTransaction();
}
catch (Exception ex)
{
CurrentDbStorage.RollbackTransaction();
var parsedEx = CurrentExceptionMgr.ParseErrorMsg(ex.Message);
return new BadRequestObjectResult(parsedEx);
};
return Ok(businessObject);
}
Установка точки останова в контроллере показала мне, что BusinessObject неправильно десериализован, например, значение свойства DocItemDt меньше фактического значения, отправленного Клиентом. В Google есть некоторые проблемы с обработкой Json DateTime, однако ни одна из них не помогла мне.
Спасибо за вашу помощь.