除ReadAsByteArrayAsync外,读取Request Content字节的其他方法有哪些?
读取Request Content字节的其他方法
除了使用ReadAsByteArrayAsync().Result同步阻塞获取字节数组外,还有以下几种常用方法:
异步await方式(推荐)
这是异步编程的标准写法,能避免同步阻塞可能引发的死锁问题:var bytes = await Request.Content.ReadAsByteArrayAsync();通过流复制转换
先将请求内容流复制到内存流,再转换为字节数组,适合需要对流进行额外操作的场景:using (var memoryStream = new MemoryStream()) { await Request.Content.CopyToAsync(memoryStream); var bytes = memoryStream.ToArray(); }同步流读取(不推荐)
对应同步版本的流复制,同样能获取字节数组,但在ASP.NET等环境中易造成线程阻塞,需谨慎使用:using (var memoryStream = new MemoryStream()) { Request.Content.CopyTo(memoryStream); var bytes = memoryStream.ToArray(); }先读字符串再转字节
如果明确请求内容的编码格式,可先读取为字符串再转换为字节数组:var contentString = await Request.Content.ReadAsStringAsync(); var bytes = Encoding.UTF8.GetBytes(contentString);注意:需确保编码与实际内容一致,否则会导致数据损坏。
内容的提问来源于stack exchange,提问作者Temo Qutashvili
相关产品推荐
相关产品推荐

