vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

ASP.NET, WebServices u. Remoting
Re: Aktion nach HttpContext.Current.Response.End() 
Autor: Drapondur
Datum: 14.01.11 00:25

Naja so richtig funktioniert das wohl doch nicht. Zumindest nicht mit folgenden Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.IO;
using System.Diagnostics;
 
namespace TrackTransferFile
{
	public class DownloadFile : IHttpHandler
	{
		public void ProcessRequest(HttpContext context)
		{
			HttpResponse response = context.Response;
			response.ContentType = "image/jpeg";
			response.AddHeader("Content-Disposition", "attachment; filename=erde.jpg");
			using (FileStream fs = new FileStream(context.Server.MapPath("erde.jpg"), _
  FileMode.Open, FileAccess.Read))
			{
				response.AddHeader("Content-Length", fs.Length.ToString());
				int bytesWritten = 0;
				using (BinaryReader br = new BinaryReader(fs))
				{
					byte[] buff = br.ReadBytes(512);
					while (buff.Length > 0 && response.IsClientConnected)
					{
						Debug.WriteLine(string.Format("Writing bytes {0} of {1} to response", _
  bytesWritten, fs.Length));
						response.BinaryWrite(buff);
						response.Flush();
						bytesWritten += buff.Length;
						buff = br.ReadBytes(512);
					}
 
					if (bytesWritten == fs.Length)
					{
						Debug.WriteLine("All bytes written");
					}
					else
					{
						Debug.WriteLine(string.Format("Only {0} bytes of {1} had been written", _
  bytesWritten, fs.Length));
					}
				}
			}
		}
 
		public bool IsReusable { get { return false; } }
	}
}
Das Verhalten sieht so aus: Das Downloadfile "erde.jpg" hat 39.486 Bytes. Ich starte den Download (mit IE8). Das Downloadfenster geht auf. Ich klicke nicht sofort auf Speichern, sondern warte ein paar Sekunden. Die letzte Debug-Meldung, die ich bekomme lautet
"Writing bytes 25600 of 39486 to response"
Dann bleibt der Server-Thread stehen, bis ich auf "Speichern" klicke. Es öffnet sich der eigentliche File-Save-Dialog des Browsers. Sofort läuft der Server-Thread weiter und sendet Daten in den Response-Stream.
Dabei werden alle Daten gesendet (das dauert 3-4 Sekunden). Mein File-Save-Dialog ist immer noch auf.
Die Codeausführung erreicht die Abfrage if (bytesWritten == fs.Length) und mir wird im im Direktfenster angezeigt, dass alle Daten heruntergeladen seien. Hier würde ich jetzt abspeichern, dass der Download erfolgreich war und den Zähler in der DB inkrementieren.

Nun erst klicke ich im FileSave-Dialog und zwar auf "Abbrechen". Der Server denkt nun alles sei heruntergeladen, obwohl ich in Wirklichkeit nichts gespeichert habe.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Aktion nach HttpContext.Current.Response.End()4.003mikeb6913.01.11 16:38
Re: Aktion nach HttpContext.Current.Response.End()2.558Drapondur13.01.11 23:05
Re: Aktion nach HttpContext.Current.Response.End()2.676mikeb6913.01.11 23:32
Re: Aktion nach HttpContext.Current.Response.End()2.574Drapondur13.01.11 23:42
Re: Aktion nach HttpContext.Current.Response.End()2.635Drapondur14.01.11 00:25
Re: Aktion nach HttpContext.Current.Response.End()2.674mikeb6914.01.11 00:41
Re: Aktion nach HttpContext.Current.Response.End()2.496Drapondur14.01.11 00:56
Re: Aktion nach HttpContext.Current.Response.End()2.685mikeb6914.01.11 10:52

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel