繁体   English   中英

C#如何反序列化IFormFile

[英]c# how to deserialize 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对象。 我究竟做错了什么?

尝试这个:

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

要么

  var serResp = (ResponseWithFile)JsonConvert.DeserializeObject(respString, typeof(ResponseWithFile));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM