ASP.Net Скачать файл в браузер клиента - PullRequest
19 голосов
/ 17 января 2012

Я пишу простую тестовую страницу для загрузки текстового файла в браузер по нажатию кнопки.Я получаю действительно странную ошибку, которую я никогда раньше не видел.Есть какие-нибудь мысли?

Ошибка происходит при 'Response.End ();'и файл никогда не попадает в браузер клиента

Код:

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

Ошибка:

Невозможно оценить выражение, поскольку код оптимизирован или собственный кадрнаходится на вершине стека вызовов.

Ответы [ 2 ]

33 голосов
/ 17 января 2012

Попробуйте изменить его на.

 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();
8 голосов
/ 25 июля 2013

Просто небольшое дополнение к вышеупомянутому решению, если у вас есть проблема с именем загруженного файла ...

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

Это вернет точное имя файла, даже если оно содержит пробелы или другие символы.

...