可以在ASP.NET Web服务器中记录到文本文件引起锁



可以在ASP.NET Web服务器中记录到文本文件。

这是我的代码:

var outStream = new FileStream(Server.MapPath("~\bin\error.txt"), FileMode.Append, FileAccess.Write, FileShare.ReadWrite);

正如您所看到的FileShare既是读和写作。

到目前为止,我还没有看到任何问题。您是否知道使用此方法可能的问题。(我不想将错误记录到Windows事件)

不是100%确保我知道您在问什么,但是任何时候都将文件写入文件时,该应用程序在完成写入的时间段内锁定了该文件。如果有时还要写另一个应用程序,则有可能发生冲突。如果两个应用程序都经过编码以处理这种性质的冲突,那么一切都会好起来的。因此,如果您要处理这种情况,则将写入方法放在一段时间内的尝试块中。如果发生错误,则它将停留在while block中,然后暂停一秒钟或其他东西,然后重试。一旦写入成功,就会脱离时块。您可能还需要放入计数器并限制尝试的数量。

请注意,如果您执行此操作,则该线程将坐在这里,直到写入成功,因此,如果您不希望这样做,则需要使用另一个线程来完成。

我想您只想对包装文件I/O的静态对象锁定。此静态对象将确保文件更新是线程安全的。

关于欣克尔先生,我一直听说有人不想在纯设计中进行多次尝试/捕获失败 - 除非我缺少一些东西。我可以看到实际上可以在哪里工作,但是我一直认为例外不应以这种方式成为"主要流程"的一部分。

最新更新