ASP.NET Core を使っていて Body に入っているデータの長さを調べようとすることはよくあると思います。
そんなときに、 Request.bdy.Length
を呼び出すと NotSupportedException を吐いてしまいました。
原因
Request.Body は Stream ですが、 Length などを呼び出す能力のない Stream 実装が入っています。(速度向上のためなのかな?)
そこで、一度別のストリームにコピーしてからなら使えるようになります。
コード
[HttpPost] public async Task<ActionResult> Upload() { if (Request.Body == null) return NotFound(); using (var memoryStream = new MemoryStream()) { Request.Body.CopyTo(memoryStream); byte[] Bytes = new byte[memoryStream.Length]; return Ok(); } }