Значение свойства DateTime неправильно получено в Asp.Net Core WebApi Controller - PullRequest
0 голосов
/ 15 октября 2019

Я использую Asp.Net Core 2.2 WebApi и WinForm Client для отправки запросов. Я использую библиотеку RestSharp в качестве Restclient. Кажется, что значения свойств с типом DateTime неправильно обрабатываются в WebApi Controller.

Source DateTime:

enter image description here

Target DateTime:

enter image description here

Код клиента:

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, однако ни одна из них не помогла мне.

Спасибо за вашу помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...