System.ObjectDisposedException: "Cannot access a closed file." после ожидания отправки потока
Ребят, такая проблема. Есть метод для отправки картинок в хранилище.
string path = "images/";
bucketName = "myBucketName";
public void UploadImage(IFormFile formFile, string name)
{
var request = new PutObjectRequest()
{
Key = $"{path}{name}",
InputStream = formFile.OpenReadStream(),
BucketName = bucketName,
};
request.Metadata.Add("Content-Type", formFile.ContentType);
client.PutObjectAsync(request);
}
Вызываю его в тестовом консольном приложении, все работает, картинка отправляется на сервер. Но если вызываю его в asp.net проекте в Post методе.
[HttpPost]
public IActionResult Edit(ServiceItem model, IFormFile titleImageFile)
{
if(Model.IsValid)
{
if (titleImageFile != null)
{
dataManager.ImageHandler.UploadImage(titleImageFile, model.Id.ToString());
return RedirectToAction(nameof(HomeController.Index), nameof(HomeController).CutController());
}
dataManager.ServiceItems.SaveServiceItem(model);
return RedirectToAction(nameof(HomeController.Index), nameof(HomeController).CutController());
}
return View(model);
}
Выбрасывает исключение System.ObjectDisposedException: "Cannot access a closed file."
.
В Startup есть связанный с ним код.
services.AddTransient<IImageHandlerRepository>(x =>
{
return new AWSImageRepository(new AmazonS3Client(Config.AWSAccesToken, Config.AWSSecretAccesToken, new AmazonS3Config()
{
ForcePathStyle = true,
RegionEndpoint = RegionEndpoint.EUWest1,
ServiceURL = Config.ServiceURL
}), Config.BucketName);
});
Как исправить эту ошибку? Буду благодарен любой помощи.
Источник: Stack Overflow на русском