Ошибки планирования консольного приложения C #, которое отправляет факсы через FAXCOMEXLib - PullRequest
1 голос
/ 22 августа 2011

У меня есть консольное приложение, написанное на C #, которое использует MS Fax (FAXCOMEXLib) для отправки факсов.Если я запускаю приложение вручную или из командной строки, оно работает как положено.Если я планирую приложение с помощью планировщика заданий или пытаюсь запустить его из службы с таймером, произойдет сбой при вызове ConnectedSubmit2 для объекта FaxDocument.Приложение работает, как и ожидалось, получает данные, создает PDF, подключается к службе факсов, заполняет свойства FaxDocument, но бомбы на ConnectedSubmit2.Это похоже на проблему безопасности.Учетная запись Windows, под которой запускается TaskScheduler, принадлежит группе администраторов.

Это же приложение работало на другом компьютере 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: доступ запрещен.в FAXCOMEXLib.FaxDocumentClass.ConnectedSubmit2 (IFaxServer pFaxServer, Object & pvFaxOutgoingJobIDs) в ElementsTransmission.Program.Main (String [] args)
...