2009-07-16 8 views
4

Ich erstelle eine Excel-Datei mit Response.write in meiner C# -Datei und es dauert 1-2 Minuten, um die Datei zu erstellen. Ich möchte UpdateProgress verwenden, um anzuzeigen, dass die Dateigeneration ausgeführt wird. Aber wenn ich UpdateProgress verwende, wird die Datei nicht generiert.Verwendung von updateprogress beim Generieren einer Datei mit Response.write in ASP.NET

Bitte lassen Sie mich wissen, wenn ich hier etwas vermisse.

+0

Ich habe das gleiche überprüfen, Fehler bekommen, wenn Response.write() .. Ich bin auch besorgt, warum ich diesen Fehler bekomme. –

Antwort

0

Siehe UpdateProgress Control Overview:

Die Updatesteuerung liefert Statusinformationen über Partial-Seite Updates in Update Kontrollen.

Sind Sie in einem Update UpdatePanel in einer partiellen Seite?

+0

Ja, es ist eine teilweise Aktualisierung der Seite. Wenn der Prozess läuft, kann ich sehen, dass der updateprogress läuft, aber sobald die at Response.Write() gestoppt wird und keine Datei generiert wird. –

+0

Gibt es eine Ausnahme? Überprüfen Sie das Ereignisprotokoll. –

+0

Sorry John, es gibt keine Ausnahme. Response.Write() ist im Server-Side-Code. –

3

Ich denke, das kommt von Missverständnis der Response-Objekt und/oder der grundlegenden HTTP-Anfrage-Struktur.

Ihre Anfrage: GET /buildXLS.aspx

Server 1 Response:/* Header Informationen für Datei herunterladen *// * Dateidaten */

Server 2 Antwort:/* hearder Infos für HTML-Seite */<div> Aktualisiere ... </div >/* Dateidaten */

wenn Sie wie Server 1 zu handeln versuchen, können Sie nicht alle Daten zurück auf die Antwort senden, aber die Datei selbst (und entsprechende Kopfzeilen). Wenn Sie versuchen, sich wie Server 2 zu verhalten, wird die Seite, die Sie herunterladen, als HTML behandelt, und Sie werden die Dateidaten nie sehen, da Header geschrieben wurden, die eine "text/html" -Übertragung anstelle von XLS anzeigen. Sobald Sie die Antwort aus irgendeinem Grund gelöscht haben, können Sie nicht mehr schreiben.

Ich kann eine Situation sehen, wo Ihr Szenario funktionieren könnte, aber nur als zwei interagierende Seiten - Seite 1 zeigt die Fortschrittsmeldung öffnet dann ein neues Fenster, Seite 2. Seite 2 startet den XLS Build und löst dann Seite 1 aus, um zu verbergen die Fortschrittsnachricht, wenn sie abgeschlossen ist. Jetzt haben Sie zwei Seiten, die den zwei Gruppen von Headern entsprechen, die Sie senden möchten, anstatt zu versuchen, sowohl HTML-Aktualisierungen zu senden als auch Dateidownloads innerhalb derselben Antwort zu starten.

+0

danke für Ihre detaillierte Erklärung, ich habe einen benutzerdefinierten definierten Fortschrittsbalken. –