web-dev-qa-db-fra.com

ASP.Net Télécharger le fichier sur le navigateur client

J'écris une page de test simple pour télécharger un fichier texte dans un navigateur en cliquant sur le bouton. Je reçois une erreur vraiment étrange que je n'ai jamais vue auparavant. Des pensées?

L'erreur se produit sur 'Response.End ();' et le fichier ne parvient jamais au navigateur client

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

Erreur:

Impossible d'évaluer l'expression car le code est optimisé ou une trame native se trouve au-dessus de la pile d'appels.

19
tier1

Essayez de le changer en.

 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

Juste un léger ajout à la solution ci-dessus si vous rencontrez des problèmes avec le nom du fichier téléchargé ...

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

Cela renverra le nom de fichier exact même s'il contient des espaces ou d'autres caractères.

8
Nashe