服务无法写入文件
本文关键字:文件 服务 | 更新日期: 2023-09-27 18:14:56
我有以下代码写入日志文件,它在我的控制台应用程序中工作得很好:
try
{
string log = "some message";
string mFileName = "some directory to the log file";
Console.WriteLine(log);
using (StreamWriter w = File.AppendText(mFileName))
{
w.WriteLine(log);
w.Dispose();
}
}
catch (Exception e)
{
Console.WriteLine("Error Log: " + e.Message);
}
但是当我把代码作为服务在我的PC上运行时,它完全停止了记录。我已经检查过了,服务和我有同样的权利。
请注意:服务不会崩溃,它只是运行不记录。
这很可能与用户权限有关。我的猜测是,启动该服务的系统用户没有权限写入文件位置。
一种解决方案是使用您自己帐户的用户凭据启动服务(因为您有权限)
另一个解决方案是给用户(本地系统用户、服务用户或web服务的IIS用户)对目录的写访问权限,或者将文件的路径更改为用户具有写访问权限的目录。
如果你想确保,在using周围添加一个try catch块,并将异常写入控制台、调试或消息框。然后你就会知道哪里出了问题。
查看File可能出现的异常。MSDN上的AppendText
我猜它会抛出UnauthorizedAccessException
为什么不直接创建StreamWriter
,将其封装在try-catch中,如果有异常,则使用System.Diagnostics.EventLog进行记录?
try
{
using (Streamwriter sw = new StreamWriter(path, true)
{
sw.WriteLine(log);
}
}
catch (Exception ex)
{
// Log exception using System.Diagnostics.EventLog
}