web-dev-qa-db-ger.com

ASP.Net Laden Sie die Datei in den Client-Browser herunter

Ich schreibe eine einfache Testseite, um eine Textdatei auf Knopfdruck in einen Browser herunterzuladen. Ich erhalte einen wirklich seltsamen Fehler, den ich noch nie gesehen habe. Irgendwelche Gedanken?

Der Fehler tritt bei 'Response.End ();' und die Datei gelangt nie zum Client-Browser

Code:

  string filePath = "C:\\test.txt";
  FileInfo file = new FileInfo(filePath);
  if (file.Exists)
  {
    Response.ClearContent();
    Response.AddHeader("Content-Disposition", "attachment; filename=" + file.Name);
    Response.AddHeader("Content-Length", file.Length.ToString());
    Response.ContentType = "text/plain";
    Response.TransmitFile(file.FullName);
    Response.End();
  }

Error:

Ausdruck kann nicht ausgewertet werden, da der Code optimiert ist oder sich ein systemeigener Frame über dem Aufrufstapel befindet.

19
tier1

Versuchen Sie es zu ändern.

 Response.Clear();
 Response.ClearHeaders();
 Response.ClearContent();
 Response.AddHeader("Content-Disposition", "attachment; filename=" + file.Name);
 Response.AddHeader("Content-Length", file.Length.ToString());
 Response.ContentType = "text/plain";
 Response.Flush();
 Response.TransmitFile(file.FullName);
 Response.End();
34
Ashwin Chandran

Nur eine kleine Ergänzung zur obigen Lösung, wenn Sie Probleme mit dem Namen der heruntergeladenen Datei haben ...

Response.AddHeader("Content-Disposition", "attachment; filename=\"" + file.Name + "\"");

Dadurch wird der genaue Dateiname zurückgegeben, auch wenn er Leerzeichen oder andere Zeichen enthält.

8
Nashe