在 .net4 IIS7 中,高度并行的 Web 环境下,写入(追加)记录到文件的最佳选项是什么?我使用 ashx http 处理程序接收应快速写入文件的小数据部分。一开始我使用了:
using (var stream = new FileStream(fileName, FileMode.Append, FileAccess.Write, FileShare.ReadWrite, 8192))
{
stream.Write(buffer, 0, buffer.Length);
}
但我注意到一些记录被破坏或不完整,可能是由于FileShare.ReadWrite引起的。接下来我尝试将其更改为FileShare.Read。然后就没有破损的记录了,但是偶尔会出现这个异常:System.IO.IOException: The process cannot access the file ... because it is being used by another process.
理想情况下,我希望操作系统可以排队并发写请求,以便最终写入所有记录。我应该使用哪种文件访问API?