Nach dem Erstellen eines Dateipfads (path
, unten) in einer Zeichenfolge (ich bin bekannt Path
in System.IO
, aber ich benutze jemand anderen Code und nicht die Möglichkeit, es umzufunktionieren, um Path
zu verwenden). Ich bin ein FileStream
mit der Datei an den Benutzer zu liefern (siehe unten):Warum wird beim Herunterladen einer Datei mit FileStream die Seitenfehlermeldung auf den Namen der ASPX-Seite und nicht auf den Dateinamen verwiesen?
FileStream myStream = new FileStream(path, FileMode.Open, FileAccess.Read);
long fileSize = myStream.Length;
byte[] Buffer = new byte[(int)fileSize + 1];
myStream.Read(Buffer, 0, (int)myStream.Length);
myStream.Close();
Response.ContentType = "application/csv";
Response.AddHeader("content-disposition", "attachment; filename=" + filename);
Response.BinaryWrite(Buffer);
Response.Flush();
Response.End();
Ich habe aus gesehen: ASP.NET How To Stream File To User Gründen Verwendung von Response.End()
und Response.Close()
zu vermeiden. Ich habe auch mehrere Artikel über verschiedene Möglichkeiten zur Übertragung von Dateien gesehen und habe eine Lösung für das Problem (https und http Header) mit einem Kollegen diagnostiziert und gefunden.
Die Fehlermeldung, die angezeigt wurde, war jedoch nicht über den Zugriff auf die Datei unter path
, sondern die aspx-Datei.
Edit: Fehlermeldung ist:
Internet Explorer cannot download MyPage.aspx from server.domain.tld
Internet Explorer was not able to open this Internet site. The requested site is either unavailable or cannot be found. Please try again later.
(Seite Name und Anschrift anonymisiert)
Warum ist das? Liegt es daran, dass der Inhalt der Datei von der HTTP-Antwort .Flush()
stammt und nicht auf eine Datei, auf die an ihrer Adresse zugegriffen wird?
können Sie eine Nachricht anzeigen bekommen? –