.NET 控制台应用程序在计划时抛出错误。手动执行时运行良好

Posted

技术标签:

【中文标题】.NET 控制台应用程序在计划时抛出错误。手动执行时运行良好【英文标题】:.NET Console App throws error when scheduled. Runs fine when executed manually 【发布时间】:2022-01-09 16:45:25 【问题描述】:

所以我决定制作一个控制台应用程序来自动化一些我通常每天都会做的重复性工作。目标是将一些文件移动到网络位置作为备份。手动执行时,应用程序运行良好。但是在计划时,它会引发错误。在检查日志文件(所有程序输出都映射到该文件)时,我发现了以下堆栈跟踪和异常消息:

at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.File.InternalCopy(String sourceFileName, String destFileName, Boolean overwrite, Boolean checkHost)
   at System.IO.File.Copy(String sourceFileName, String destFileName)
   at automateDump.Program.Main(String[] args) in D:\software\automateDump\Program.cs:line 78
 The user name or password is incorrect.

我在System.IO 中使用File.Copy(src, dest) 方法。

对于上下文,文件路径是:

来源:D:\u01\test.file。目的地:\\NetDrive\test.file

任何帮助将不胜感激。

编辑 1

代码:

if (File.Exists(movePath + et1))

     Console.WriteLine($"Copying et1 to network location. Size - sizeInMegaBytes(new FileInfo(movePath + et1).Length)");
     File.Copy(movePath + et1, networkPath + et1);
     Console.WriteLine("Done Copying");

movePathnetworkPath 是源路径和目标路径,et1 是文件。

sizeInMegaBytes() 是我写的一个实用函数。在这种情况下是无关紧要的。

编辑 2

异常处理代码:

catch (Exception ex)

    using (logger = File.AppendText(@"D:\u01\logs.txt"))
    
         logger.WriteLine($"ex.StackTrace \n ex.Message");
        

【问题讨论】:

请同时发布您正在使用的代码 @Phate01 编辑了帖子 您的应用程序是否与对源文件和目标文件位置具有必要权限的用户一起运行? 你是如何运行这个应用程序的?这似乎是一个权限问题。如果您使用的是 Windows 服务或计划作业,则可以以...具有相应权限的特定用户身份运行 @Chetan 是的。我在安排它时仔细检查了。 【参考方案1】:

理论:您还没有选中保存任务用户密码的选项:

注意解释性文字:使用 UNC 路径意味着您正在尝试访问非本地资源!

【讨论】:

以上是关于.NET 控制台应用程序在计划时抛出错误。手动执行时运行良好的主要内容,如果未能解决你的问题,请参考以下文章

JSON.Net 在使用 [JsonConvert()] 时抛出 ***Exception

创建表时抛出错误

C# HttpClient.SendAsync 在测试某些 URL 时抛出“发送请求时发生错误”异常

PL/SQL 函数在执行时抛出进程内存错误

Swift 在尝试访问分段控制索引时抛出错误

实体框架在执行 lambda 表达式时抛出错误