Yah*_*ein 3 c# stream asp.net-core-2.1
我正在 ASP.Net core 中实现文件上传。在 Windows 上本地测试时一切正常,但是当我在 AWS Lambda 上部署代码时,我得到了
“System.InvalidOperationException:内部流位置意外更改。在 Microsoft.AspNetCore.Http.Internal.ReferenceReadStream.VerifyPosition() 处,位于 Microsoft.AspNetCore.Http.Internal.ReferenceReadStream.Read(Byte[] 缓冲区,Int32 偏移量,Int32 计数) )在 System.IO.Stream.CopyTo(流目标,Int32 bufferSize)”
我的代码:
[HttpPost]
[Route("")]
[Authorize]
public IActionResult Store([FromForm] MyFiles files)
{
var stream1 = files.File1.OpenReadStream();
var stream2 = files.File2.OpenReadStream();
string result;
using (MemoryStream ms = new MemoryStream())
{
stream1.CopyTo(ms);
ms.Position = 0;
result= GetCrcForFile(ms);
}
}
public class MyFiles
{
public IFormFile File1 { get; set; }
public IFormFile File2 { get; set; }
}
public string GetCrcForFile(Stream result)
{
uint crc = 0;
using (MemoryStream ms = new MemoryStream())
{
result.CopyTo(ms);
var bytes = ms.ToArray();
crc = Crc32Algorithm.Compute(bytes);
return crc.ToString("X");
}
}
Run Code Online (Sandbox Code Playgroud)
线上发生异常result.CopyTo(ms);
我不确定 .Net Core 在 Linux 环境或 AWS Lambda 问题上的行为是否不同,或者我做错了什么。