ファイルが書き込まれた直後に UNC パスからファイルを読み取れないというまれなケースがあります。ワークフローは次のとおりです。
- plupload は大きなファイルをまとめて WebAPI メソッドに送信します
- メソッドは、チャンクを UNC パス (ストレージ サーバー) に書き込みます。これは、ファイルが完全にアップロードされるまでループします。
- 他のいくつかの操作の後、同じメソッドがファイルを再度読み取ろうとしますが、ファイルが見つからない場合があります
サーバーがしばらくアイドル状態になった後にのみ発生するようです。アップロードを数回繰り返すと、機能し始めます。
ネットワーク構成の問題か、ファイルが再度読み取られる前に完全に閉じられていないことに関係していると思いました。
ファイルを書き込むコードの一部を次に示します (この場合、ファイルストリームは問題ありませんか?)
SaveStream(stream, new FileStream(fileName, FileMode.Append, FileAccess.Write));
SaveStream の定義は次のとおりです。
private static void SaveStream(Stream stream, FileStream fileStream)
{
using (var fs = fileStream)
{
var buffer = new byte[1024];
var l = stream.Read(buffer, 0, 1024);
while (l > 0)
{
fs.Write(buffer, 0, l);
l = stream.Read(buffer, 0, 1024);
}
fs.Flush();
fs.Close();
}
}
ファイルを読み取るコードは次のとおりです。
var fileInfo = new FileInfo(fileName);
var exists = fileInfo.Exists;
fileInfo.Exists
false を返すのは です。
ありがとうございました