c # System.Printing AddJob () genererer undtagelse på Windows server 2012 r2

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg forsøger at skrive et c # program, der vil udskrive et dokument til en netværksprinter ved hjælp af System.Printing namespace. Koden virker på mit Windows 7-skrivebord, men ikke på Windows-serveren.


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());
}


Koden kontrollerer senere jobstatus for at afgøre, om den udskrives med succes.


Problemet er, at når du kører på Windows Server 2012 R2, genererer den følgende undtagelse:


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  | 


Linje 908 er: PrintSystemJobInfo myprintjob=kø .AddJob ();
Dette sker ikke på mit Windows 7-skrivebord. Det virker perfekt der.
Har nogen nogen anelse om, hvorfor dette sker?


Yderligere information:
Både skrivebordet og serveren er 64 bit. I begge tilfælde blev den samme printer brugt. Filen kan udskrives manuelt på Windows-serveren, så det bør ikke være et problem med printeren. Prøvede at køre programmet som administrator.

Bedste reference