因此,基本上我編寫了一個windows服務,它掃描zip文件的任何給定目錄,然後將其上傳到FTP服務器。我添加了一個跟蹤方法,假設寫入一個txt文件並保存所有內容的日誌。問題是當我鬆開服務到Windows我得到在事件查看器(我使用EventLog類添加中的LogEvent)返回嘗試使用FileStream和StreamWriter編寫LogFile的異常
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?如果你把它寫到你的桌面上會發生什麼? – Ragnagord