0

我敢肯定有人有同样的问题,但我没有找到任何东西。我发送 post 请求来获取文件,我得到这个模型作为响应:

    public class ResponseWithFile
{
    public bool IsSuccessful { get; set; }
    public List<int> Errors { get; set; }
    public IFormFile File { get; set; }
}

我从控制器得到这个响应:

    [Route("get")]
    [HttpPost]
    public async Task<IActionResult> GetFile([FromBody]GetFileDto request)
    {
        var result = _fileService.GetFile(request.Id, request.ContentType);
        if (result.IsSuccessful)
            return Ok(result);
        return BadRequest(result);
    }

响应是正确的,我可以将其读入字符串,但是当我尝试将其反序列化为响应对象时出现错误:

            HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
        string respString = string.Empty;
        using (var sr = new StreamReader(resp.GetResponseStream()))
        {
            respString = sr.ReadToEnd();
        }

        var serResp = (ResponseWithFile)JsonConvert.DeserializeObject(respString);//error here

InvalidCastException:无法将“Newtonsoft.Json.Linq.JObject”类型的对象转换为“ServiceModels.ResponseWithFile”类型

我确定这是因为 IFormFile 对象。我究竟做错了什么?

4

1 回答 1

1

尝试这个:

var serResp = JsonConvert.DeserializeObject<ResponseWithFile>(respString);

或者

  var serResp = (ResponseWithFile)JsonConvert.DeserializeObject(respString, typeof(ResponseWithFile));
于 2019-07-22T09:31:50.140 回答