HTTPコンテンツをFileStreamに書き込もうとしていますが、の行で「クローズファイル」にアクセスできません。 CopytoAsync(ストリーム)を待ちます。 「はを待つ」場合は、例外なく処理を継続しますが、書き込まれるファイルサイズは0KBです。私が間違いを犯しているアイデアは?C#、FileStreamにHTTPコンテンツを書き込む問題、閉じたファイルにアクセスできない
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内のファイルへのアクセスによって引き起こされたのだろうかと思います。 awaitを削除するときに例外が発生しないという事実は説明するのが簡単です:CopyToAsyncメソッドが呼び出されますが、呼び出し側は、CopyToAsyncのasyn部分がどこに到達するのを待たずに次のループに進みますそれはスローする。私は例外がまだスローされている疑いがありますが、観察されない例外になります – Ladi
@ラディあなたの疑惑が待っていることはまったく正しいです。例外は非常にランダムに発生します。時にはtempdirにアクセスし、しばしばサーバーのパスにアクセスするためのものです。私は答えとして投稿したコードを使ってそれを完成させました。 – Benjamin