代码之家  ›  专栏  ›  技术社区  ›  Natalie

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

  •  0
  • Natalie  · 技术社区  · 9 年前

    我有一个网络服务项目。我正在尝试使用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 回复  |  直到 9 年前
        1
  •  2
  •   Eric J.    9 年前

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

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

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

        2
  •  0
  •   Manoj Gupta    9 年前

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