![](/img/trans.png)
[英]c# console application stays on status running in task scheduler windows 2016
[英]Why C# Application does not create file while running from windows task scheduler?
我有一个C#桌面应用程序,该应用程序应在运行时创建并写入文本文件。 这个应用程序假设每天早上9:00运行,因此,我在Windows任务计划程序中创建了一个任务来运行该程序。 从Windows任务计划程序运行时,该应用程序运行正常,除了创建任何文本文件。 但是,如果我关闭该应用程序并通过双击重新运行,则它将相应地创建文本文件。
这是我的文本文件编写代码:
public void process_log(string str, string logtype)
{
try
{
string myFile = null;
string myDate = DateTime.Now.Date.ToString("yyyyMMdd");
string myDir = null;
switch (logtype)
{
case "process":
myDir = "logs\\process\\";
break;
case "err":
myDir = "logs\\err\\";
break;
case "URLSTR":
myDir = "logs\\URLSTR\\";
break;
case "MOMT":
myDir = "logs\\MOMT\\";
break;
default:
myDir = "logs\\";
break;
}
myFile = myDir + myDate + ".txt";
StreamWriter sw = default(StreamWriter);
DirectoryInfo dir = new DirectoryInfo(myDir);
if (dir.Exists == false)
{
Directory.CreateDirectory(myDir);
}
if (File.Exists(myFile))
{
sw = File.AppendText(myFile);
}
else
{
sw = File.CreateText(myFile);
}
sw.WriteLine(str);
sw.Close();
}
catch (Exception ex)
{
str = DateTime.Now.ToString("HH:mm:ss") + ex.Message;
process_log(str, "err");
str = ex.StackTrace;
process_log(str, "err");
}
}
由于我们每天都找不到任何日志文件,因此这个问题变得非常严重。 请对此提供帮助,谢谢。
我怀疑这是权限问题。 通过双击运行该应用程序时,它将在您的用户上下文中运行。 Windows Scheduler运行时,它将在Windows Scheduler的任务定义页面中指定的上下文下运行,默认为本地系统(我认为)。 您可以通过在Windows Scheduler任务定义页面中更改执行上下文来进行检查,然后以您自己的帐户运行-然后它应该可以工作。
我已经通过引用要创建的文本文件位置的完整路径解决了我的问题。 例如:“ C:\\ MyLog \\ logs \\ URLSTR \\”,然后运行良好。 谢谢大家
在大多数情况下,这似乎是一个权限问题,因为调度程序执行者无权在特定位置创建文件。
选项:
要进行验证,请检查作业的历史记录,以查看是否有任何错误消息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.