RestSharp 一些对象值通过 PUT 或 POST 作为 null 发送到 API

RestSharp some object values being sent as null to API via PUT or POST

我正在将一个对象从我的 Web 项目发送到同一解决方案中的 API 项目。我有一个 class,它使用 RestSharp 并作为所有服务的 API 的发件人。

目前,有一个 API 控制器正在接收对象,但并非所有参数都被保留并通过 PUT 显示为空值。但是,使用 ApiClient 的 'PutAsync' 的不同控制器接收其自己的对象,所有值都完好无损。

我什至尝试过将方法更改为 POST,但仍然没有成功。

我是不是遗漏了什么,或者对象的 serialization/de-serialization 出了什么问题?

      public class UserInfo
    {
        public int UserId { get; set; }
        public string FirstName { get; private set; }
        public string LastName { get; private set; }
        public string EmailAddress { get; private set; }
    }
    internal class WebService : IWebService
    {
        public async Task<bool> UpdateProfile(UserInfo userInfo)
        {
             try
             {
                 var url = "/User/UpdateProfile";
                 return await apiClient.PutAsync<UserInfo, bool>(url, userInfo);
             }
             catch (Exception ex)
             {
                 this.logger.LogError("Error in UpdateProfile", ex);
                 throw;
             }
         }
    }

RestSharp 设置

    internal class ApiClient : IApiClient
    {
        public async Task<TOut> PutAsync<TIn, TOut>(string url, TIn data) where TIn : new()
        {
            return await PushData<TIn, TOut>(url, data, Method.PUT);
        }

        private async Task<TOut> PushData<TIn, TOut>(string url, TIn data, Method method) where TIn : new()
        {
            var request = new RestRequest(url, method);
            request.AddHeader(HttpRequestHeader.Authorization.ToString(), $"Bearer {GetApiAccessToken()}");
            request.AddJsonBody(data);
            var result = await client.ExecuteAsync<TOut>(request);
            if (result.StatusCode != HttpStatusCode.OK)
            {
                throw new Exception("Unable to push API data");
            }

            return result.Data;
        }
    }

发送前请求中的数据,在Parameters下找到,如下:
Data sent to API UserController

    [Produces("application/json")]
    [ApiController]
    [Authorize]
    [Route("api/[controller]")]
    public class UserController : ControllerBase
    {
        [HttpPut]
        [Route("UpdateProfile")]
        public async Task<IActionResult> UpdateProfile([FromBody] ProfileUpdateInfo profileInfo)
        {
            try
            {
                var status = await this.service.UpdateProfile(profileInfo);

                return Ok(status);
            }
            catch (Exception ex)
            {
                return BadRequest("Error in updating profile");
            }
        }   
    }

这是参数中显示的数据:
Data Consumed by API UserController

再次检查我的代码后,问题是我的 set 访问器对所有字符串属性都是私有的,这就是 int 属性 仍然通过的原因。