Я пытаюсь написать HTTP-контент в FileStream, и я получаю сообщение об ошибке «Не удается получить доступ к закрытому файлу» в строке, где я делаю Ожидание CopytoAsync (поток). Если я удалю «жду», он продолжит операцию без каких-либо исключений, однако размер записанного файла составляет 0 КБ. Любая идея, когда я совершаю ошибку?C#, Проблема с записью содержимого HTTP в FileStream, Не удается получить доступ к закрытому файлу
var provider = new MultipartFormDataStreamProvider(tempdir);
await Request.Content.ReadAsMultipartAsync(provider);
foreach (var content in provider.Contents)
{
using (var stream = new FileStream(serverPath, FileMode.Create, FileAccess.ReadWrite))
{
await content.CopyToAsync(stream);
}
}
В чем исключение также указывает, какой файл вызывает исключение? Интересно, вызвано ли исключение доступом к файлу в tempdir или доступом к файлу в serverPath. То, что вы не получаете исключения при удалении ожидания, просто объяснить: вызывается метод CopyToAsync, но без ожидания, что вызывающий абонент перейдет к следующему циклу, не дожидаясь, пока часть asyn CopyToAsync достигнет той части, где он бросает. Я подозреваю, что исключение все еще бросается, но становится незаметным исключением – Ladi
@Ladi ваше подозрение в ожидании абсолютно верно. Исключение происходит очень случайным образом. иногда для доступа к tempdir и часто доступа к пути к серверу. Мне удалось сделать это с кодом, который я опубликовал в качестве ответа. – Benjamin