.Net Crystal Report Druck-Anwendung auf Terminal-Dienst-Verbindungsfehler ausgeführt wird, wenn Sitzung getrennt wird

StackOverflow https://stackoverflow.com/questions/602295

Frage

Ich habe eine .NET-Anwendung erstellt auf einem App Server läuft, die Anforderungen für einen Bericht erhält und den angeforderten Bericht druckt.

Die C # Anwendung verwendet Crystal Reports den Report zu laden und anschließend ausdrucken.

Die Anwendung wird auf dem Server ausgeführt werden, die über eine Remote-Desktop-Verbindung unter einem bestimmten Benutzerkonto verbunden ist (erforderlich für alte Anwendungen). Wenn ich von der Remote-Sitzung trennen startet die Anwendung Ausnahmen erhöhen, wie:

Nachricht: CrystalDecisions.Shared.CrystalReportsException: Bericht konnte nicht geladen

Diese Art von Fehler wird nie ausgelöst, wenn die Remote-Sitzung aktiv ist. Der Server hat die App läuft unter Windows Server 2003, meine Box, die die Verbindung schafft, ist Windows XP.

Ich schätze diese ziemlich seltsam ist, aber ich kann kein Problem mit der Anwendungsbereitstellung sehe ich geschaffen haben.

Wer weiß, was sein könnte, dieses Problem verursachen?

EDIT: Ich habe die Kugel gebissen und die Anwendung als Windows-Dienst erstellt, das offenbar nicht lange dauern, ich war einfach nicht davon überzeugt, es würde das Problem lösen. Wie dem auch sei es nicht !!!

Ich habe auch versucht, den Multi-Thread-Code zu entfernen, die die Druckfunktion asynchron rufen. Ich tat dies, um einfach die App und verengen den Grund hinunter es scheitern könnte. Wie auch immer, das hat die Situation auch nicht verbessern!

EDIT: Die beiden Fehler, die wir bekommen sind:

  

System.Runtime.InteropServices.COMException   (0x80000201): Ungültige Drucker   angegeben. beim   CrystalDecisions.ReportAppServer.Controllers.PrintOutputControllerClass.ModifyPrinterName (String   newVal) bei   CrystalDecisions.CrystalReports.Engine.PrintOptions.set_PrinterName (String   value) bei   Dsa.PrintServer.Service.Service.PrintCrystalReport (Report   Bericht)

Der Drucker ist nicht ungültig, dies bestätigt wird, wenn 60 Sekunden später die Zeit tickt und der Bericht gedruckt erfolgreich.

Und

  

kann der Antrag nicht eingereicht wird für   Hintergrundverarbeitung. beim   CrystalDecisions.ReportAppServer.Controllers.ReportSourceClass.GetLastPageNumber (Request   pRequestContext) bei   CrystalDecisions.ReportSource.EromReportSourceBase.GetLastPageNumber (ReportPageRequestContext   reqContext) --- Ende der   Ausnahme-Stack-Trace --- bei   CrystalDecisions.ReportAppServer.ConvertDotNetToErom.ThrowDotNetException (Ausnahme   Essen   CrystalDecisions.ReportSource.EromReportSourceBase.GetLastPageNumber (ReportPageRequestContext   reqContext) bei   CrystalDecisions.CrystalReports.Engine.FormatEngine.PrintToPrinter (Int32   nCopies, Boolean zusammengestellt, Int32   startPageN, Int32 endPageN) bei   CrystalDecisions.CrystalReports.Engine.ReportDocument.PrintToPrinter (Int32   nCopies, Boolean zusammengestellt, Int32   startPageN, Int32 endPageN) bei   Dsa.PrintServer.Service.Service.PrintCrystalReport (Report   Bericht)

EDIT:

Ich lief filemon zu überprüfen, ob es ein Zugang Problem war. An dem Punkt, wenn die Fehlerdatei mon Berichte auftritt

Anfrage: OPEN | Pfad: C: \ windows \ assembly \ gac_msil \ system \ 2.0.0.0__b77a5c561934e089 \ ws2_32.dll | Ergebnis: NOT FOUND | Sonstiges: Attribute Fehler

War es hilfreich?

Lösung

Unser besonderes Problem ist gelöst. Im Grunde genommen, wenn die Berichte erstellt wurden, wurden sie mit Informationen über Drucker gespeichert. Im Grunde ein bestimmte Drucker war für den Bericht festgelegt und gespeichert werden.

Dieser Drucker ist nicht mehr vorhanden, weshalb der Bericht versagt hatte begonnen. Im Grunde hatten wir die Report-Designer zu öffnen und jegliche Verbindung mit Druckern in dem Bericht entfernen.

Andere Tipps

Wir haben diese Fehler mehrmals in den letzten Jahren aufgetreten. Viele Male wollte ich für einige spezifischere Fehlermeldung.

Als erstes würde ich prüfen, ob es nicht möglich, mehrere Crystal Reports-Versionen installiert. In unserem expereince, fanden wir, dass 9.0 Crystal Reports nicht gut zu spielen scheint mit 10. Deinstallieren von Version 9 schien einige unserer Kunden zu helfen. Wenn beide installiert sind, ich highlly empfehlen Deinstallation von beide , dann wieder der Installation von Crystal Reports 10.

Einer unserer frühesten Crystal Reports Fehler war der gefürchtete „Der Antrag für die Hintergrundverarbeitung nicht vorgelegt werden konnte.“ Berichte würden für eine Weile funktionieren, dann plötzlich würden sie aufhören. Nach einem Blick auf den Code, fand ich einen Ort, an dem wir nicht von einem Report entsorgen. Korrekt dieses Dokument das Problem behoben zu entsorgen.

In letzter Zeit schlugen wir eine Gamasche von „Die Anforderung nicht für die Hintergrundverarbeitung eingereicht werden.“ und "Invalid Printer" Fehler. Ein Kunden-Server hatte mehrere Netzwerkdrucker über IP-Adresse definiert. Druck würde eine Zeit lang gut funktionieren, dann plötzlich, bam , der Kunde hätte die „Invalid Printer“ Fehler und rief unsere Unterstützung.

Ein Kollege Entwickler reparierte die „Invalid Printer“ Problem, indem sie alle folgenden Dinge zu tun:

  1. Bearbeiten und speichern Sie die RPT-Datei in Visual Studio 2005. Ich war das Berichtsformat kompatibel mit Crystal Report 9 zu halten, weil wir unsere Änderungen wollten noch ältere Versionen mit unseren Kunden verteilbar sein.
  2. Speicher von Crystal Reports-Dateien mit der "Kein Drucker" Option. Aus dem Visual Studio 2005-Menü wählen Sie Crystal Reports / Design / Drucker-Setup, und wählen Sie das "No Printer" Kontrollkästchen.
  3. Wir änderten eine Formel, die „Seite N von M“ von etwas seltsam wie folgt angezeigt:

"Page " + Left (CStr (PageNumber), Length (CStr (PageNumber)) - 3) +
" of " + Left (CStr (TotalPageCount), Length (CStr (TotalPageCount)) - 3)

folgt aus:

"Page " + CStr(PageNumber,0) + " of " + CStr(TotalPageCount,0)

Leider habe ich keine Ahnung, welche (eine oder alle) der oben genannten Aktionen der Fehler behoben werden. Ich sage „kann“, weil für alles, was ich weiß, auf magische Weise der Fehler wegen einiger IT-Netzwechsel ging.

Schließlich haben Sie lesen In diesem Whitepaper? es ist zwar nicht unbedingt haben unsere Probleme zu lösen, es war sehr interessant.

Wenn Sie ein Fenster Service-Wrapper für Ihre Anwendung erstellen, bedeutet dies, dass es unabhängig von Benutzer angemeldet läuft weiter. Es kann auch ein automatischer Start festgelegt werden. Ich denke, dass, weil Sie eine tatsächliche Anwendung verwenden und nicht einen Windows-Dienst nicht tatsächlich Abmelde einer Sitzung auf dem Server, wenn Sie ausgeführt wird.

Hier ist ein Beispiel für Code Project:

http://www.codeproject.com/KB/system/WindowsService.aspx

Sind Sie sicher, dass Sie „Trennen Sie Remote-Sitzung‘ im Gegensatz zu ‚Abmelden‘. Ich trenne meine Sitzungen zu einem NT Server 2003 die ganzen Zeit und alles rund um weiterhin ganz gut laufen. Auf der anderen Seite Abmelden wird töten die Anwendungen in dieser Sitzung ausgeführt wird.

Was ist Ihr o / s-Server läuft?

Um das Problem zu lösen, die Sie beschrieben haben, müssen Sie konzentrieren sich auf, was dein Problem ist.

Ich habe erhielt die Nachricht: CrystalDecisions.Shared.CrystalReportsException: Bericht konnte nicht geladen mehrere Male, und es ist aufgrund der Tatsache, dass Sie nicht den Bericht zugreifen können. Entweder es ist nicht vorhanden oder in Ihrer Situation die Sie nicht an das Gerät angeschlossen. Der Fehler ist nicht auf etwas Druck in Zusammenhang steht.

Ich hatte ein dunkles Thema, das auf diese ähnlich war, außer es ist ein (Schock-Horror) Automatisierung Problem mit Excel war. Ich fand die Anwendung gut funktioniert, wenn ich meine Remote-Desktop-Sitzung angeschlossen hatte, aber einmal getrennt, wäre es Automatisierung Fehler, die sich auf den Standarddrucker geben.

Ich glaube, das Problem betrifft, wie der Standarddrucker festgelegt wird, wenn Sie mit Remote-Desktop-Verbindung. Vorausgesetzt, dass Sie eine RDP-Datei haben für Ihre Remote-Desktop-Sitzung einleitet, wenn Sie es bearbeiten, dann wählen Sie die „Lokale Ressourcen“ können Sie sehen, ob Sie auf der Remote-Sitzung lokalen Drucker gemeinsam nutzen.

Wenn es aktiviert ist, bedeutet dies, wenn Sie eine Verbindung herstellen, Ihr lokaler Standarddrucker den Standarddrucker auf dem entfernten Rechner wird. Ziehen Sie beim Trennen, werden Ihre Anwendung Standarddrucker möglicherweise noch auf die jetzt nicht verfügbar Standarddrucker von Ihrem lokalen Rechner verweisen.

Sie sollten dies, lösen können, indem sichergestellt wird Sie Ihren lokalen Drucker nicht teilen, indem die Druckerkontrollkästchen aus dem „Local Ressourcen“ deaktivieren.

Eine einfachere Lösung wäre „Druckerumleitung“ auf dem Server zu deaktivieren. Siehe https://serverfault.com/questions/5646/how -do-i-disable-Remote-Drucker-mit-group-policy für weitere Informationen.

Wenn Sie schauen, im Detail, wie man

hinzufügen Kontrollkästchen in Crystal Reports auf einem boolean Feild und wenn der Boolesche Feld ist false

deaktivieren sonst markieren Sie die Checkbox Blick auf diesen Artikel

http: //checkboxcrystalreport.blogspot .com / 2009/07 / Druck-Kontrollkästchen-in-Kristall-Report-for.html

Nach langen googeln ich diesen Link gefunden, aber didnt versuchen, Coz ohne jeden anderen freien Server.

http://www.microsoft.com/technet/security /bulletin/ms04-017.mspx

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top