C#,将HTTP内容写入FileStream的问题,无法访问已关闭的文件

时间:2016-07-01 03:49:10

标签: c# multithreading filestream multipartform-data

我正在尝试将HTTP内容写入FileStream,并且在 await CopytoAsync(stream)无法访问关闭文件”的错误>。如果我删除“等待”,它将继续操作,没有任何异常,但写入的文件大小为0KB。我犯错误的任何想法?

   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);
                }
    }

1 个答案:

答案 0 :(得分:4)

我通过在MultipartFormDataStreamProvider中使用FileData属性而不是Content来解决了这个问题。

另外,我不再使用CopyToAsync,而是使用普通的File.Move,它对我来说非常适合。

  var provider = new MultipartFormDataStreamProvider(tempdir);
  await Request.Content.ReadAsMultipartAsync(provider);
        foreach (var content in provider.FileData)
          {
                File.Move(content.LocalFileName, serverPath);
          }