C# 如何反序列化IFormFile

我确信有人遇到了同样的问题,但我没有找到任何东西。我发送发布请求来获取文件,并得到此模型作为响应:


    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 对象。我究竟做错了什么?


茅侃侃
浏览 73回答 1
1回答

慕田峪7331174

尝试这个:var&nbsp;serResp&nbsp;=&nbsp;JsonConvert.DeserializeObject<ResponseWithFile>(respString);或者&nbsp;&nbsp;var&nbsp;serResp&nbsp;=&nbsp;(ResponseWithFile)JsonConvert.DeserializeObject(respString,&nbsp;typeof(ResponseWithFile));
打开App,查看更多内容
随时随地看视频慕课网APP