![]() |
Restservice Response funktioniert nicht
Moin,
ich hab da grad ein kleines Problem. Und zwar habe ich das Problem dass unsere Datenbank noch auf 32bit läuft, da es irgendwelche Probeleme mit einer alten Software gibt, welche im Moment noch nicht ausgetauscht werden kann. Ich habe einen REST-Service über DataSnap geschrieben der unter 64bit einwandfrei funktioniert. Unter 32bit bekomme ich allerdings eine Accessviolation. Es geht um folgenden Code:
Delphi-Quellcode:
Ersetze ich ihn durch folgenden Code geht es:
mStream.LoadFromFile(mFilename);
mStream.Position := 0; Response.ContentStream := mStream; Response.Content := AnsiString(mStream); Response.ContentType := 'application/pdf'; Response.SetCustomHeader('Content-Disposition', Format('attachment; BelegID="%s"', ['Abrechnung'])); // Derzeit nur Abrechnungsbelege
Delphi-Quellcode:
Von daher vermute ich dass es mit der PDF-Datei zusammenhängt die als Datenstream zurückgegeben wird. Die Funktion läuft über ein TWebModule und ist dort als Action registriert. Kann mir da vielleicht irgendjemand weiterhelfen, wie ich den Response schreiben muss, damit er unter 32bit funktioniert? Über 64bit würde es gehen, aber das ganze muss schnell online gehen und das Upgrade auf 64bit für den Server auf dem das laufen soll ist erst für ende des Jahres vorgesehen.
Response.Content := 'Test';
Response.ContentType := 'text/plain'; Über ein kleines bisschen Anschubhilfe währe ich euch wahnsinnig dankbar, wei momentan bin ich grad echt ratlos was ich da noch machen soll. Vielen Dank schon einmal im Voraus. Viele Grüße Maliko EDIT: Ich habe jetzt nur den Snippet gepostet der Probleme macht. Die Funktion ist erheblich länger, läuft aber problemlos durch. |
AW: Restservice Response funktioniert nicht
Delphi-Quellcode:
Response.Content := AnsiString(mStream);
Ehrlich jetzt? Ein Cast von einem TStream auf einen AnsiString? Das kann eigentlich nicht wirklich funktionieren - selbst wenn es durchlaufen würde. Und, wieso überhaupt Content setzen, wenn ContentStream doch schon die Daten enthält? |
AW: Restservice Response funktioniert nicht
Content (string) oder ContentStream
und ja, der böse Cast geht garnicht. z.B. ![]() |
AW: Restservice Response funktioniert nicht
Ich bring ihn um. Ich bring den Typen um, sollte ich dem noch einmal über den Weg laufen. Das ist mir tatsächlich nicht aufgefallen. Und zwar weil die Funktion nicht von mir ist, sondern von einem ehemaligen Kollegen. Das war ursprünglich ein normales Programm mit grafischer Oberfläche und ich hab die komplette Logik in einen WindowsService portiert. Und dabei natürlich den bestehenden Quellcode 1 zu 1 übernommen.
Da ich allerdings den Fehler gemacht habe die Portierung auf 64bit vorzunehmen und erst danach auf 32bit umzustellen, ist mir das nie aufgefallen, weil unter 64bit funktionierte es ja. Warum auch immer. Da ich mich selbst damit aber auch nicht wirklich auskannte und nur die Portierung gemacht habe, ist es mir nicht aufgefallen. Schande über mein Haupt. Vielen vielen Dank für eure Hilfe. Sollten wir uns irgendwann mal in der Realität über den Weg laufen, geb ich euch ein Bier aus. Viele Grüße Maliko |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:06 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz