Laden...

Frage zum HTTP-Handler

Erstellt von Echo]6[ vor 13 Jahren Letzter Beitrag vor 13 Jahren 677 Views
E
Echo]6[ Themenstarter:in
111 Beiträge seit 2006
vor 13 Jahren
Frage zum HTTP-Handler

Hallo!

Ich möchte eine Datei zum Download anbieten, die in meinem Webprojekt liegt, was ich ja mit einem generischen Handler (.ashx) realisieren kann.

Hier mal ein wenig Pseudocode, damit ihr wisst was ich meine.


public class DocumentHandler : IHttpHandler
{
        public void ProcessRequest(HttpContext context)
        {
              if (datei.Exists())
              {
                context.Response.ContentType = contenttype;
                context.Response.AddHeader("content-disposition", "attachment; filename=" +
                    context.Server.UrlEncode(filename) +
                    context.Server.UrlEncode(fileExt));
                    context.Response.AddHeader("content-length", dokument.Length.ToString());


                context.Response.BinaryWrite(dokument);
                context.Response.End();
              }
              else
              {
                  return;
              }
        }
}

Meine Problem ist nun folgendes: Wenn ich eine Datei zum Download anbieten möchte, aber diese aus welchen Gründen auch immer nicht existiert, verschwindet meine Ursprungsseite und es wird eine komplett leere Seite angezeigt, mit der Adresse des Handlers.

Kann man den Handler evtl. so "abbrechen", dass wenn die Datei nicht existieren sollte, meine Ursprungsseite (von der ich dem Handler aufgerufen habe) beibehält und nicht auf die leere "Handlerseite" springt?

Vielen Dank schonmal im Voraus!

Gruß
Echo

s
902 Beiträge seit 2007
vor 13 Jahren

Hallo,

du könntest den Handler im Falle, das keine Datei vorhanden ist, ein Javascript schreiben, welches History.Back() aufruft.

mfg
serial

5.940 Beiträge seit 2005
vor 13 Jahren

Salute Echo

Mache aus dem normalen Link eines mit target="_blank", so kommt entweder der Download oder ein leeres Fenster das du ggf. schliessen könntest.

Serverseitig kommst du über die Servervariablen mit dem Key "HTTP_REFER" an die vorherige Seite.

Gruss Peter

--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011