Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
调度通过FAXCOMEXLib发送传真的C#控制台应用程序时出错_C#_Scheduled Tasks_Windows Server 2008 R2_Fax - Fatal编程技术网

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

调度通过FAXCOMEXLib发送传真的C#控制台应用程序时出错,c#,scheduled-tasks,windows-server-2008-r2,fax,C#,Scheduled Tasks,Windows Server 2008 R2,Fax,我有一个用C#编写的控制台应用程序,它使用MS Fax(FAXCOMEXLib)发送传真。如果我手动或从命令提示符运行应用程序,它将按预期工作。如果我使用任务调度器计划应用程序,或者尝试从带有计时器的服务运行,则在调用FaxDocument对象上的ConnectedSubmit2时会失败。应用程序按预期运行,获取数据,创建pdf,连接到传真服务,填充FaxDocument属性,但在ConnectedSubmit2上爆炸。这感觉像是一个安全问题。TaskScheduler在其下运行的windows

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

此应用程序已在另一台Server2008(而非R2)计算机上运行,但没有出现任务计划程序问题

该服务器正在运行Microsoft server 2008 R2

概述:如果手动运行,应用程序将工作,如果从另一个进程(如任务调度器)运行,应用程序将失败

如有任何建议,将不胜感激。多谢各位

C#代码:

事件日志中的错误:

  • System.Runtime.InteropServices.COMException(0x80070102):操作失败。 在FAXCOMEXLib.FaxDocumentClass.ConnectedSubmit2(IFaxServer pFaxServer、对象和pvFaxOutgoingJobIDs)
  • System.UnauthorizedAccessException:访问被拒绝。位于ElementTransmission.Program.Main(字符串[]args)处的FAXCOMEXLib.FaxDocumentClass.ConnectedSubmit2(IFaxServer pFaxServer,对象和pvFaxOutgoingJobIDs)

  • Bill

    您是否尝试过让计划任务在与手动运行此代码的用户帐户相同的用户帐户下运行?如果有效,则可能是任务调度程序使用的帐户权限有问题。是的,我使用了与当前登录到windows的管理员帐户相同的帐户来运行任务调度程序,但该帐户不起作用。谢谢,我们也尝试了NetworkService帐户,但没有成功。请查看您提供的链接。博客帖子提供了上下文。从我的链接:
    到潜在解决方案的链接始终是受欢迎的,但请在链接周围添加上下文,以便您的其他用户了解它是什么以及为什么存在。始终引用重要链接中最相关的部分,以防目标站点无法访问或永久脱机。
    -我们希望实际答案出现在您的帖子中,提供链接作为完整上下文的参考。就目前而言,这不是一个答案。作为一种礼貌,以协助OP的问题张贴。读者可以通过链接确定is是否解决了问题。我没有遇到过这个问题,也没有测试过解决方案,因此我无法提供更多的上下文。
    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;
    }