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

时间:2015-03-23 19:07:14

标签: c# web-services server streamwriter

我有一个webservices的项目。我正在尝试使用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应该忽略该部分并继续使用该方法,因为我不想影响每个方法的过程。

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

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:0)

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