服务器文件中的 StreamWriter 正在使用,但在本地工作

StreamWriter in server file is in use, but in local works

我有一个网络服务项目。我正在尝试使用 StreamWriter 为每个方法写一个日志,在我的本地机器上一切正常。

像这样:

static StreamWriter sw;
try{
if (File.Exists(Directorio + FILE_NAME))
   {
      sw = File.AppendText(Directorio + FILE_NAME);
   }
   else
   {
      sw = File.CreateText(Directorio + FILE_NAME);
      sw.WriteLine("---LOG ");
    }
    sw.WriteLine(Date);
    sw.WriteLine(Header);
    sw.WriteLine();
    sw.Close();//*/
}catch(Exception){}

但是当上传到服务器时有时会抛出无法写入的错误,因为文件正在使用中。但是我每次都关闭它并且我认为用try catch应该忽略那部分并继续该方法,因为我不想影响每个方法的过程。

我知道这是很少的信息,我不能在这里重现我的问题,但希望有这样错误的人能给我提示。

Web 服务器通常一次处理多个请求。偶尔出现的错误很可能是由于一个请求尝试记录而另一个请求已经在记录但尚未完成。

如果您希望使用自己的日志记录框架,则需要协调对文件的写入。

您还可以使用一种特殊的开源日志记录框架,例如 NLog

这可能是由于多个请求进入网络服务器,一个请求试图写入此日志文件,而另一个请求试图打开。可能的解决方法是线程同步,这并不好,因为它会显着降低 Web 服务的性能。 或者我推荐使用 nLog (http://nlog-project.org/),在几个项目中使用没有任何问题。