【发布时间】:2024-12-24 23:45:01
【问题描述】:
所以基本上我编写了一个 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
为
Path.GetFullPath(System.Reflection.Assembly.GetExecutingAssembly().Location).Replace(
Path.GetFileName(System.Reflection.Assembly.GetExecutingAssembly().Location)
格式化成字符串。
其余的工作都很好。
感谢您的回复!
【问题讨论】:
-
您的程序是否有权写入 system32?例如,如果将其写入桌面会发生什么?
标签: c# .net windows-services