从任务调度程序C#调用时,StreamWriter不写入文件

nei*_*ldt 6 c# windows scheduled-tasks streamwriter

我有以下函数,它接受一个字符串,并将字符串内容记录到日志文件中.

private static void LogEvent(string sEvent)
{
        sEvent = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss") + "|" + sEvent;

        Console.WriteLine(sEvent);

        try
        {
            using (StreamWriter oStreamWriter = new System.IO.StreamWriter("MyService_" + DateTime.Now.ToString("yyyyMMdd") + ".log", true))
            {
                oStreamWriter.WriteLine(sEvent);
            }
        }
        catch
        {

        }
}
Run Code Online (Sandbox Code Playgroud)

当从命令行手动运行调用该函数的程序或双击可执行文件时,将创建或附加日志文件.

我遇到的问题是我已经将程序设置为每10分钟从任务调度程序调用一次,并且由于某种原因代码正在执行,除了程序没有创建或附加到日志文件.

计划任务使用与手动运行程序时相同的用户权限来调用程序.

为什么会发生这种情况,我该如何解决它.

Jon*_*eet 14

您当前正在尝试写入进程的当前工作目录 - 这可能就像C:\Windows\System32任务调度程序执行时一样.你无法在那里写作.

指定绝对文件名,我想你会好的.目前尚不清楚,你想写,但你应该想想仔细-最好你应该从它生成的数据分开你的可执行文件.考虑Environment.GetFolderPath与合适的SpecialFolder成员一起使用(例如ApplicationData)

请注意,使用File.AppendAllText会使代码更简单,请注意.