Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从任务计划程序C调用StreamWriter时未写入文件#_C#_Windows_Scheduled Tasks_Streamwriter - Fatal编程技术网

C# 从任务计划程序C调用StreamWriter时未写入文件#

C# 从任务计划程序C调用StreamWriter时未写入文件#,c#,windows,scheduled-tasks,streamwriter,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 oStre

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

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
        {

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

我遇到的问题是,我已将此程序设置为每10分钟从任务调度器调用一次,并且出于某些原因,代码正在正确执行,但程序未创建或附加到日志文件

计划任务正在使用与我手动运行程序时相同的用户权限调用该程序


发生这种情况的原因,以及我如何修复它。

您当前正试图写入进程的当前工作目录-当任务计划程序执行该目录时,它很可能类似于
C:\Windows\System32
。你将无法在那里写作

指定一个绝对文件名,我想你会没事的。现在还不清楚您想在哪里写入,但您应该仔细考虑这一点——理想情况下,您应该将可执行文件与其生成的数据分离开来。考虑与适当的成员一起使用(例如<代码>应用数据< /代码>)< /P> 请注意,使用会使代码更简单。

的答案是正确的,问题在于工作目录权限,您应该使用它来编写日志,但我想补充一点,
从来没有像您那样有空的
catch
catch{}
对我来说,这个
catch
语句有时隐藏了很多未知问题

我觉得他们有点像挑逗者,说

catch
{
    // WHO CARES
}

永远不要将此类异常隐藏在地毯下,采取一些行动或通知最终用户或在某处标记发生了什么。这将有助于开发人员在以后的阶段。

如果您没有使用空catch子句隐藏异常,您可能会对如何修复它有更好的想法。至少,您希望消除的异常应该登录到
Trace
或其他日志机制中,以便在出现大问题时可以看到它们。谢谢,这就是问题所在。我注意到我能够使用Application.StartupPath获得应用程序的初始路径