В моем коде я хочу перенаправить на страницу thankyou.html после загрузки pdf, чтобы я добавлял download () в этот метод, я пишу код
protected void download()
{
try
{
string path = Server.MapPath("pdf/myDoc.pdf");
System.IO.FileInfo file = new System.IO.FileInfo(path);
if (file.Exists)
{
string strURL = path;
WebClient req = new WebClient();
Response.Clear();
Response.ClearContent();
Response.ClearHeaders();
Response.Buffer = true;
Response.AddHeader("Content-Disposition", "attachment;filename=\"myDoc.pdf\"");
byte[] data = req.DownloadData(path);
Response.BinaryWrite(data);
Response.Flush();
Response.Redirect("thankyou.html");
}
else
{
Response.Write("This file does not exist.");
}
}
catch (Exception ex)
{
ScriptManager.RegisterStartupScript(this, GetType(), "showalert", "alert('" + ex.Message.ToString() + "');", true);
}
}
Но он показывает мне ошибку Невозможно оценить выражение, потому что код оптимизирован или собственный фрейм находится на вершине стека вызовов и когда Response.Redirect ("thankyou.html"); возьми за пределы покажи мне ошибку Невозможно перенаправить после отправки заголовков HTTP. Вы можете посоветовать мне, как перенаправить на другую страницу?
@PatrickHofman ответ не появился на моем компьютере, когда я отправил свой комментарий. Я удалю это.





Вы не можете. Отправка файла и перенаправление на страницу - это два отдельных ответа HTTP. Их нельзя совмещать.
Что происходит довольно часто, так это то, что загрузка запускается страницей, которую вы возвращаете, поэтому есть некоторый javascript, который позаботится о загрузке, пока вы отображаете сообщение Спасибо. Если хотите, можете использовать этот javascript: Загрузить файл с помощью Javascript / jQuery.
Вы можете отправить только один ответ, а не два. Либо файл или же редирект. Похоже, вам нужно немного переосмыслить последовательность шагов в пользовательском интерфейсе. Возможно, направить пользователя на страницу с благодарностью, которая сама по себе содержит ссылку для загрузки файла?