C# System.Printing AddJob() генерирует исключение на Windows Server 2012 r2

Я пытаюсь написать программу aC#, которая будет печатать документ на сетевом принтере, используя пространство имен System.Printing. Код работает на моем рабочем столе Windows 7, но не на сервере Windows.

LocalPrintServer server = new LocalPrintServer(); //To find the nearby printers
PrintQueueCollection queuecollect = server.GetPrintQueues(); //collects all the printer queues on the machine
string queuename = null; //this gets set to the printer we want
foreach (PrintQueue pq in queuecollect)
{
    if (pq.FullName == _printername) //printername is from the config
    {
        queuename = pq.FullName; //pq goes down the list of queues found until it matches
    }
}
_Log.Debug("queuename: " + queuename); //Just so I can see it
PrintQueue queue = new PrintQueue(server, queuename); //this creates a queue for the specified printer on the local machine
byte[] bytes = System.IO.File.ReadAllBytes(dirpath); // The path to the PDF file
try
{
    PrintSystemJobInfo myprintjob = queue.AddJob(); //adds a job to the queue (This is the line 908 mentioned in the error)
    Stream jobstream = myprintjob.JobStream; //creates a stream to write data to the job
    jobstream.Write(bytes, 0, bytes.Length);
    jobstream.Close(); //close it, or else.
}
catch (Exception ex)
{
    MessageBox.Show(ex.ToString());
}

Код позже проверяет статус задания, чтобы определить, успешно ли оно напечатано.

Проблема заключается в том, что при запуске на Windows Server 2012 R2 генерируется следующее исключение:

System.Printing.PrintJobException: An exception occurred while creating print job information. Check inner exception for details.
   at System.Printing.PrintSystemJobInfo..ctor(PrintQueue printQueue, String jobName, PrintTicket printTicket)
   at System.Printing.PrintQueue.AddJob(String jobName)
   at FaxReceiver.PrintFaxes() in c:\(path to Form1.cs):line 908  | 

Строка 908: PrintSystemJobInfo myprintjob = queue.AddJob(); Это не происходит на моем рабочем столе Windows 7. Там прекрасно работает. У кого-нибудь есть идеи, почему это происходит?

Дополнительная информация: рабочий стол и сервер являются 64-битными. В обоих случаях использовался один и тот же принтер. Файл может быть напечатан вручную на сервере Windows, поэтому это не должно быть проблемой с принтером. Пробовал запускать программу от имени администратора.

0 ответов

Другие вопросы по тегам