Toon posts:

ASP.NET (C#) Print txt met Printer Spooler (spoolsv.exe)

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo,
Ik heb een Windows Application project aangemaakt in vs2003 en de volgende code uitgevoerd. Deze print netjes het textbestand uit:

Process myProcess = new Process();
try
{
myProcess.StartInfo.FileName = @"c:\mytextfile.txt";
myProcess.StartInfo.Verb = "Print";
myProcess.StartInfo.CreateNoWindow = true;
myProcess.Start();
}
catch
{
}
myProcess.WaitForExit(10000);
myProcess.Close();

dezelfde code wil ik gebruiken in een ASP.NET Webapplicatie, maar dit werkt niet.
het cpu-gebruik van de spoolsv.exe service blijft op "0" en myProcess.Start() geeft geen uitzonderingen of errors.
Het lijkt een rechten kwestie, maar kan de spoolsv.exe niet starten met een ander account.
Overigens doe ik een impersonate met een administrator.

Iemand die mij kan helpen?

  • Luuk1983
  • Registratie: Januari 2004
  • Laatst online: 12-02 11:07
Hangt de printer aan de server? Het lijkt me dat je met deze (serverside) code alleen printers kan aanroepen die aan de server hangen, niet printers die aan je lokale PC hangen.

AMD Ryzen 7 5800X3D | Gigabyte X570 Aorus ELITE | 32GB Corsair vengence 3200 | MSI RTX3080 Gaming Z | 2 x WD Black SN850X 2TB, Samsung 850 EVO 1TB | NZXT H7 Flow | Be quiet! Dark Rock Pro 4 | Corsair RM850x | Meta Quest 3


Verwijderd

Topicstarter
Luuk1983 schreef op vrijdag 01 september 2006 @ 09:22:
Hangt de printer aan de server? Het lijkt me dat je met deze (serverside) code alleen printers kan aanroepen die aan de server hangen, niet printers die aan je lokale PC hangen.
print is idd netwerkprinter, maar via Windows Application werkt het wel. Het moet overigens gewoon server-side uitgevoerd worden, de client hoeft enkel het commando te geven en het document hoeft dus niet uit zijn eigen printer te komen, maar echt uit de netwerkprinter, die op de webserver geinstalleerd is

  • empheron
  • Registratie: Mei 2004
  • Laatst online: 09-02 22:39
Weet je zeker dat je gebruiker geauthenticeerd is als zichzelf op je website. Als je namelijk de gewone asp.net user gebruikt dan heb je
- kans dat deze geen rechten heeft om te printen
- Er geen printers zijn geinstalleerd voor deze gebruiker.

Je zou kunnen proberen de application pool waaronder de app draait onder een andere gebruiker aan te maken waarvoor je de printer installeert op de server.

Kijken of je integrated authentication aanstaat en de credentials goed binnenkomen.

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 14:23

TeeDee

CQB 241

Je zou in plaats van spoolsrv.exe ook lpr.exe kunnen gebruiken.
C#:
1
2
3
4
5
6
7
8
9
Process printjob = new System.Diagnostics.Process();
printjob.StartInfo.FileName = "lpr.exe";
printjob.StartInfo.Arguments = "-S "+ip+ " -P "+naam+" -d " + file;
printjob.StartInfo.UseShellExecute = false;
printjob.StartInfo.RedirectStandardError = true;
printjob.StartInfo.RedirectStandardOutput = true;
printjob.StartInfo.CreateNoWindow = true;
printjob.Start();
printjob.WaitForExit();

De argumenten e.d. kan je wel uit de lpr.exe /? halen.

Heart..pumps blood.Has nothing to do with emotion! Bored


Verwijderd

Topicstarter
het vreemde is dan de printopdracht wel in de takenlijst van mijn print komt te staan. er staat dan: bezig met plaatsen in wachtrij..

@teedee.. het is geen fysieke printer maar een bestandsprinter die wel de spoolsv.exe vereist, dus lpr.exe kan ik niet gebruiken..

  • Mastermind
  • Registratie: Februari 2000
  • Laatst online: 17-01 10:57
Je moet nog toevoegen:
C#:
1
myProcess.StartInfo.UseShellExecute = True;

Verwijderd

Topicstarter
Mastermind schreef op vrijdag 01 september 2006 @ 12:22:
Je moet nog toevoegen:
C#:
1
myProcess.StartInfo.UseShellExecute = True;
Property Value
true to use the shell when starting the process; otherwise, the process is created directly from the executable file. The default is true.

;)
Pagina: 1