Я выполняю загрузку файлов в ядре ASP.Net.
Все работает нормально при локальном тестировании в Windows, но когда я развертываю свой код на AWS Lambda, я получаю
"System.InvalidOperationException: позиция внутреннего потока неожиданно изменилась.
в Microsoft.AspNetCore.Http.Internal.ReferenceReadStream.VerifyPosition ()
в Microsoft.AspNetCore.Http.Internal.ReferenceReadStream.Read (буфер Byte [], смещение Int32, число Int32)
at 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");
}
}
Исключение происходит в строке result.CopyTo(ms);
Я не уверен, что .Net Core ведет себя по-разному в среде Linux или в проблеме AWS Lambda, или я делаю что-то не так.