我的机器:Win7 32bit,.net 4
我有一个基于.net 4的控制台程序,可生成3个excel文件并通过SMTP服务器逐个发送。
当我双击exe或在cmd中运行时,它会正确运行并使用这3个excel文件发送3封电子邮件。
但是当我将exe放在Task Scheduler中时,单击“Run”。只发送了第一封电子邮件,其他两封电子邮件以某种方式无法发送。
有什么想法吗?
答案 0 :(得分:4)
要真正了解任务计划程序运行程序时发生了什么,您可以将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
的{{1}}对象添加到Trace.Listeners集合中。 myListener
参数指定要传递给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>
&gt;打开EventViewer。 Start
希望这可以帮助您找出问题所在,因为此时此人都在猜测。
答案 1 :(得分:0)
问题:编写.net C#控制台应用程序,将文档从共享驱动器上载到SharePoint文档库。以Service Acct身份登录时,执行时未发现任何问题,文件转移到SP文档库中没有问题。但是,通过任务计划程序执行会遇到“system.io.directorynotfoundexception ....”错误。另请注意,使用个人帐户我在登录服务器时或通过任务计划程序使用我的个人帐户执行.exe时没有问题。
分析:当服务帐户。记录在代码中的映射驱动器是可访问的。但是,任务调度程序无法读取映射的驱动器(即s:\ xxxxx Reports \)。
解决方案:注意到访问的文件来自EMC VNX Windows文件共享。将引用文档位置的控制台应用程序代码更改为以下路径\ server.com \ vnxcifs01 \ Saved_xxxx_Report_Outputs \ xxxxxxxxxxx预定报告。在此更改之后重新构建exe,任务计划程序就像一个魅力。
我希望这可以帮助一些人在类似的环境中工作。