调度通过FAXCOMEXLib发送传真的C#控制台应用程序时出错

时间:2011-08-21 20:18:00

标签: c# scheduled-tasks windows-server-2008-r2 fax

我有一个用C#编写的控制台应用程序,它使用MS Fax(FAXCOMEXLib)发送传真。如果我手动或从命令提示符运行应用程序,它按预期工作。如果我使用任务计划程序安排应用程序或尝试从具有计时器的服务运行,则在调用FaxDocument对象上的ConnectedSubmit2时会失败。应用程序按预期运行,获取数据,创建pdf,连接到传真服务,填充FaxDocument属性,但在ConnectedSubmit2上炸弹。这感觉像是一个安全问题。在运行的TaskScheduler下的Windows帐户属于管理员组。

此应用程序已在另一台Server 2008(而不是R2)计算机上运行,​​而没有使用任务计划程序。

有问题的服务器正在运行Microsoft Server 2008 R2。

回顾:如果手动运行,应用程序将工作,如果从任务计划程序等其他进程运行,则应用程序将失败。

任何建议都会非常感激。谢谢。

C#代码:

FAXCOMEXLib.FaxServer faxServer = new FAXCOMEXLib.FaxServer();
FAXCOMEXLib.FaxDocument faxDocument = new FAXCOMEXLib.FaxDocument();

ArrayList al = new ArrayList();
al.Add(orderPdfFilePath);
if (facesheetPdfFilePath != "")
    al.Add(facesheetPdfFilePath);

if (write) Console.WriteLine("Preparing to Connect to Fax Server...");
sbLog.Append("Preparing to Connect to Fax Server...\r\n");
faxServer.Connect("");
if (write) Console.WriteLine("Connected.");
sbLog.Append("Connected.\r\n");

// Add Sender Information to outgoing fax
faxDocument.Sender.Name = dr2["FacilityName"].ToString();
faxDocument.Sender.Department = dr2["TSID"].ToString();
faxDocument.Sender.TSID = Truncate(dr2["TSID"].ToString(), 20);
faxDocument.Recipients.Add(dr2["FaxNumber"].ToString(), dr2["Pharmacy"].ToString());
faxDocument.Bodies = al.ToArray(typeof(string));
faxDocument.Subject = order;

if (write) Console.WriteLine("Attempting submit to fax server...");
sbLog.Append("Attempting submit to fax server...\r\n");

// attempt send...
try
{
    object o;
    faxDocument.ConnectedSubmit2(faxServer, out o);    
    if (write) Console.WriteLine("Fax sent successfully " + DateTime.Now.ToString());
    sbLog.Append("Fax sent successfully " + DateTime.Now.ToString() + ".\r\n");

}
catch (Exception ex)
{
    if (write) Console.WriteLine("SEND FAILED! " + order + " " + DateTime.Now.ToString() + "  " + ex.Message);
    sbLog.Append("SEND FAILED! " + order + " " + DateTime.Now.ToString() + ".\r\n" + ex.Message + "\r\n" + ex.InnerException + "\r\n");
    error = true;
}

事件日志中的错误:

  1. System.Runtime.InteropServices.COMException(0x80070102):操作失败。 在FAXCOMEXLib.FaxDocumentClass.ConnectedSubmit2(IFaxServer pFaxServer,Object& pvFaxOutgoingJobIDs)
  2. System.UnauthorizedAccessException:拒绝访问。在ElementsTransmission.Program.Main(String [] args)的FAXCOMEXLib.FaxDocumentClass.ConnectedSubmit2(IFaxServer pFaxServer,Object& pvFaxOutgoingJobIDs)