Я получаю файл изображения с типом Microsoft.AspNetCore.Http.IFormFile
в контроллере.
И я загружаю этот файл в BLOB-объект Azure.
До этого я беру такой процесс, как следующий
Контроллер
[HttpPost]
public async void ActionMethod(IFormFile img)
{
// some process
using(MemoryStream stream = new MemoryStream())
{
// (1)
img.CopyTo(stream); // (2)
stream.Seek(0, SeekOrigin.Begin);
// call await cloud block blob.UploadFromStreamAsync(stream);
}
// some process
}
Когда проходит через using
поток
поток
CanRead: true
CanSeek: true
CanTimeout: false
CanWrite: true
Capacity: 0
Length: 0
Position: 0
ReadTimeout: 'stream.ReadTimeout' threw an exception of type 'System.InvalidOperationException'
WriteTimeout: 'stream.ReadTimeout' threw an exception of type 'System.InvalidOperationException'
и в точке и после нее (2)
возникает следующая ошибка
System.ObjectDisposedException occurred
HResult=0x80131622
Message=Cannot access a disposed object
ObjectName: 'FileBufferingReadStream'
Source=Microsoft.AspNetCore.WebUtilities
StackTrace:
at Microsoft.AspNetCore.WebUtilities.FileBufferingReadStream.ThrowIfDisposed()
at Microsoft.AspNetCore.WebUtilities.FileBufferingReadStream.set_Position(Int64 value)
at Microsoft.AspNetCore.Http.Internal.ReferenceReadStream..ctor(Stream inner, Int64 offset, Int64 length)
at Microsoft.AspNetCore.Http.Internal.FormFile.OpenReadStream()
at Microsoft.AspNetCore.Http.Internal.FormFile.CopyTo(Stream target)
at AzureStorageManager.AzureStorageFileModules.<UploadFileAsync>d__11.MoveNext()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
Реальная проблема заключается в том, что указанные коды хорошо работают в некоторых ситуациях, но не в некоторых (я не могу уловить ситуацию. file
всегда одинаков).
Пожалуйста, помогите мне ...