我的机器:Win7 32bit,.net 4
我有一个基于 .net 4 的控制台程序,它生成 3 个 excel 文件并通过 SMTP 服务器一一发送。
当我双击 exe 或在 cmd 中运行时,它可以正常运行并使用这 3 个 excel 文件发送 3 封电子邮件。
但是当我把exe放在任务计划程序中,然后单击“运行”。仅发送了第一封电子邮件,而其他两封电子邮件不知何故无法发送。
任何想法?
我的机器:Win7 32bit,.net 4
我有一个基于 .net 4 的控制台程序,它生成 3 个 excel 文件并通过 SMTP 服务器一一发送。
当我双击 exe 或在 cmd 中运行时,它可以正常运行并使用这 3 个 excel 文件发送 3 封电子邮件。
但是当我把exe放在任务计划程序中,然后单击“运行”。仅发送了第一封电子邮件,而其他两封电子邮件不知何故无法发送。
任何想法?
要真正了解任务计划程序运行程序时发生了什么,您可以将 Trace 语句放在代码中的重要步骤中,例如:
Trace.WriteLine("Start creating mail object");
和
Trace.WriteLine(string.Format("Exception occured: {0}\r\n{1}", ex.Message, ex.StackTrace);
不要忘记Trace.WriteLine
在您的异常处理程序中放置一个,以便您知道是否出现问题。
您可以通过在 .config 文件中配置侦听器来控制这些语句的写入位置。
下面的示例添加一个EventLogTraceListener
名为myListener
Trace.Listeners 集合的对象。该initializeData
参数指定要传递给EventLogTraceListener(String)
构造函数的事件日志源的名称。
<configuration>
<system.diagnostics>
<trace autoflush="false" indentsize="4">
<listeners>
<add name="myListener"
type="System.Diagnostics.EventLogTraceListener"
initializeData="TraceListenerLog" />
</listeners>
</trace>
</system.diagnostics>
</configuration>
您可以通过转到Start
>打开 EventViewereventvwr
希望这可以帮助您找出问题所在,因为此时任何人都在猜测。
问题:编写一个 .net C# 控制台应用程序以将文档从共享驱动器上传到 SharePoint 文档库。以服务帐户登录时,执行时未发现问题,文件传输到 SP 文档库时没有问题。但是,通过任务计划程序执行时遇到“system.io.directorynotfoundexception ....”错误。另请注意,使用个人帐户在服务器上登录或通过任务计划程序使用我的个人帐户执行 .exe 时执行代码没有问题。
分析:当服务帐户。登录到代码中的映射驱动器是可访问的。但是任务调度程序无法读取映射的驱动器(即 s:\xxxxx Reports\)。
解决方法:注意到访问的文件来自 EMC VNX Windows 文件共享。将引用文档位置的控制台应用程序代码更改为以下路径 \server.com\vnxcifs01\Saved_xxxx_Report_Outputs\xxxxxxxxxxx Scheduled Reports。在此更改之后重建了 exe,任务计划程序就像一个魅力一样工作。
我希望这可以帮助一些在类似环境中工作的人。