2012-10-15 73 views
0

我的机器:Win7的32位,.NET 4任务计划程序不能运行控制台程序。NET正确

我有一个基于.NET 4控制台程序生成3个Excel文件和一个通过SMTP送他们一个服务器。

当我双击exe文件或在cmd中运行,它运行正常,并发送3个电子邮件与这3个excel文件。

但是,当我把exe放在Task Scheduler中,然后点击“Run”。只发送了第一封电子邮件,其他两封电子邮件无法发送。

有什么想法?

+0

我会检查由任务计划程序使用的用户帐户。它可能不会帮助,因为你可以发送一个文件,但它是值得的尝试。 – Ondra

+0

该帐户在管理员组中。 – DerekY

+0

您应该在程序中添加一些日志记录,并在程序尝试发送第二封电子邮件时查看是否收到异常? – Peter

回答

3

要真正知道什么时候该程序是由任务计划程序运行,你可以把跟踪语句在代码中的重要步骤,如要去:

Trace.WriteLine("Start creating mail object"); 

Trace.WriteLine(string.Format("Exception occured: {0}\r\n{1}", ex.Message, ex.StackTrace); 

唐忘记在你的异常处理程序中放置一个Trace.WriteLine,这样你就知道是否出现了问题。

您可以通过在.config文件中配置侦听器来控制这些语句的写入位置。

以下示例将名为myListenerEventLogTraceListener对象添加到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>eventvwr

希望这有助于你找出是什么问题,因为在这一点上它是任何人的猜测打开事件查看器。

+0

谢谢彼得。但是在我的代码中添加Trace.WriteLine之后。我在日志文件中发现没有错误或异常。该程序运行正常。 – DerekY

+0

因此,程序发送邮件到SMTP服务器没有错误,但不知怎的,SMTP服务器不会交付3封邮件中的2封? – Peter

+0

这就是我的想法。但是当我检查SMTP服务器时,发送列表中只有第一封电子邮件。 – DerekY

0

问题:代码a .net C#控制台应用程序将文件从共享驱动器上传到SharePoint文档库。当以Service Acct身份登录时,在执行时未发现问题,这些文件转移到SP文档库中没有问题。但是,通过任务计划程序执行会遇到“system.io.directorynotfoundexception ....”错误。还请注意使用个人帐户我在登录服务器或通过任务计划程序使用我的个人帐户执行.exe时没有执行代码的问题。

分析:当Service Acct。登录映射的驱动器中的代码是可访问的。但是,任务计划程序无法读取映射的驱动器(即s:\ xxxxx Reports \)。

解决方案:注意到所访问的文件来自EMC VNX Windows文件共享。将引用文档位置的控制台应用程序代码更改为以下路径\ server.com \ vnxcifs01 \ Saved_xxxx_Report_Outputs \ xxxxxxxxxxx计划报告。在这个改变之后重建exe文件,Task Scheduler像一个魅力一样工作。

我希望这可以帮助一个人在类似的环境中工作。

相关问题