Drucken über Webservice

7. Januar 2013 17:24

Hallo zusammen,

ich habe einen AIF-Webservice erstellt, über den man von extern einen Druck anstoßen kann.
Der Aufruf des Webservice funktioniert einwandfrei.
"Nur" der Aufruf der Druckroutine (auf einem freigegebenen Drucker auf dem Server auf dem der AOS-Dienst läuft) sorgt für eine Fehlermeldung in den AIF-Ausnahmen:

Ausnahme: Warning
Modul: AIF
Untergeordnetes System: AifRequestProcessor-executeServiceOperation
Ausnahmemeldung: Es ist kein Standarddrucker ausgewählt.

Zum Testen habe ich mich auch mit dem Benutzer unter dem der AOS-Dienst läuft an Windows angemeldet und einen Standard-Drucker selektiert. Hat aber nix gebracht.

- In der Konfig des Servers und des Clients ist jeweils das Drucken über den AOS aktiviert.
- Der AOS-Dienst wurde neu gestartet.
- Der Drucker kann im AX-Client zum Drucken selektiert werden (mit dem Prefix "AOS").
- Wenn ich die Webservice-Methode über einen Test-Job aufrufe funktioniert der Druck.

Hat sonst jemand eine Idee was ich noch versuchen könnte oder was ich anders machen müßte?

Re: Drucken über Webservice

7. Januar 2013 20:47

Hat der Benutzer, mit welchem du den AIF Service aufrufst, einen Drucker konfiguriert?

Normalerweise sollten alle Funktionen, welche durch das AIF angesprochen werden, nicht unter dem AOS Account, sondern unter dem Account des Aufrufenden Benutzers ausgeführt werden...

Re: Drucken über Webservice

8. Januar 2013 11:33

Danke für Deine Antwort.

Der Benutzer unter dem ich den Webservice aufrufe hat auf dem AOS-Server einen Standarddrucker eingestellt.
Mit diesem Benutzer kann ich im AX-Client auch die AOS-Drucker ansprechen.

Ich habe mittlerweile noch folgendes gefunden (nach einem Tip im MS-Forum):
http://blogs.msdn.com/b/emeadaxsupport/ ... inter.aspx

Hier wird am Ende erwähnt, dass die Druckansteuerung im Kontext des Benutzers, unter dem der entsprechende Application Pool läuft, vorgenommen wird.
Dies ist in meinem Fall der Account des Business Connector - Benutzers.

Aber auch der BC-User ist in den Sicherheitseinstellungen des Druckers als berechtigt eingetragen.

Re: Drucken über Webservice

15. Januar 2013 17:49

Ich bin ein Schritt weiter gekommen.

Ich habe zum Testen folgende Benutzer auf meinen Domänen-User umgestellt.
Vorher waren diese auf einen eigens dafür angelegten Business-Connector-Proxy-User eingestellt (die Möglichkeit sich an irgendeinen Rechner einzuloggen ist für diesen Account im AD deaktiviert).

- Application Pool User im IIS.
- Die client-credentials der .config meiner Webservice-Test-Application.
- Der Business Connector Proxy-User in AX (2009).

Nachdem ich dann noch auf dem Server auf dem der IIS läuft für meinen Benutzer einen Standard-Drucker ausgewählt hatte, kam der gewünschte Ausdruck auch auf diesem raus.

Ich muss jetzt "nur" noch herausfinden, wie ich von AX aus den gewünschten Drucker ansprechen kann.

Ich habe folgendes ausprobiert:
printJobSettings = SysPrintOptions::newPrintJobSettingsOnServer();
printJobSettings.deviceName("Name of the Printer", ClassRunMode::Server);
printJobSettings.setTarget(PrintMedium::Printer);
Hier kommt der Ausdruck auf dem Standarddrucker.

Mit
printJobSettings = new PrintJobSettings();
printJobSettings.deviceName("Name of the Printer", ClassRunMode::Client);
printJobSettings.setTarget(PrintMedium::Printer);
kommt kein Ausdruck.

Re: Drucken über Webservice

16. Januar 2013 19:03

Nun funktionierts doch noch... :-)

Die printjobsettings in AX müssen client seitig ("new PrintJobSettings()" statt "SysPrintOptions::newPrintJobSettingsOnServer()") definiert werden.

Und der Druckername in
printJobSettings.deviceName("Name of the Printer", ClassRunMode::Client);
muss der Netzwerkname des Druckers sein.

Zum Beispiel:
"\\Servername\Printername" statt "Printername on Servername" wie er in Win2008 unter "Devices and Printers" angezeigt wird.