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.
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();
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.