C# 尝试使用FileStream和StreamWriter写入日志文件时出现异常

C# 尝试使用FileStream和StreamWriter写入日志文件时出现异常,c#,.net,windows-services,C#,.net,Windows Services,因此,基本上我编写了一个windows服务,它扫描任何给定目录中的zip文件,然后将其上传到FTP服务器。我添加了一个跟踪方法,该方法假设写入一个txt文件并记录所有内容。当我将服务发布到windows中时,我在事件查看器(我使用EventLog类添加了LogEvent)中收到一条返回的错误消息 System.IO.IOException:进程无法访问该文件 “C:\Windows\system32\traceLog.txt”,因为其他用户正在使用它 过程 执行跟踪的代码如下所示 private

因此,基本上我编写了一个windows服务,它扫描任何给定目录中的zip文件,然后将其上传到FTP服务器。我添加了一个跟踪方法,该方法假设写入一个txt文件并记录所有内容。当我将服务发布到windows中时,我在事件查看器(我使用EventLog类添加了LogEvent)中收到一条返回的错误消息

System.IO.IOException:进程无法访问该文件 “C:\Windows\system32\traceLog.txt”,因为其他用户正在使用它 过程

执行跟踪的代码如下所示

private void EscribirTrace(string mensaje)
    {
        if (Tracing)
        {
           try
            {
              using (FileStream archivo2 = new FileStream(string.Format("{0}\\traceLog.txt", Environment.CurrentDirectory), FileMode.Append, FileAccess.Write, FileShare.ReadWrite))
                {
                    mensaje = string.Format("{0} - {1} \r\n", DateTime.Now, mensaje);

                    StreamWriter writer = new StreamWriter(archivo2);
                    writer.WriteLine(mensaje);
                    writer.Flush();
                    writer.Dispose();
                }
            }
            catch (Exception ex)
            {
                LogEvent("Error en escribir tracing", ex);
            }
        }

    }
如有任何意见,将不胜感激

编辑因此,经过一些研究,我认为system32不是存放文件的最佳位置。我的意图是让该日志文件位于安装服务的路径。经过一些研究后,我更换了

Enviroment.CurrentDirectory
为了

格式化为字符串

其余的都很有效


谢谢你的回复

这是因为您的using语句尚未发布该文件。您将其打开,以便在关闭流之前无法对其进行写入

如果只想将文本写入文件,只需使用:

File.WriteAllText(FILEPATH, TEXTDATA);

该调用将打开该文件,写入该文件,然后关闭该文件。

如果该调用使用…请确保该文件上的所有其他流都已正确关闭

如果它抛出streamwriter构造函数


将using更改为具有构造函数中新文件流的流编写器

/Windows/system32需要管理员访问权限。您的应用程序可能没有以适当的权限运行。您应该尝试将日志写入其他(限制较少)位置。如果需要写入system32,请确保您的服务以管理员权限运行

您的程序是否具有写入system32的权限?例如,如果将其写入桌面,会发生什么情况?
File.WriteAllText(FILEPATH, TEXTDATA);