Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Можем ли мы использовать Response.Flush () вместо Response.End ()

Автор вопроса: user1509Ответов: 3

Response.End() генерирует ThreadAbortException.

Использование HttpContext.Current.ApplicationInstance.CompleteRequest вместо него не решает проблему.

Итак, можем ли мы использовать Response.Flush() вместо Response.End()

responsehttpcontext

Ответы

Ответ 1 · рейтинг 11 · Aristos

Response.Flush() отправляет браузеру то, что находится в буфере, но не останавливает обработку страницы, поэтому он продолжит выполнение следующих шагов.

Что Response.End() делать , так это останавливать шаги выполнения при следующем вызове функции в жизненном цикле страницы asp.net. http://msdn.microsoft.com/en-us/library/ms178472.aspx

И поэтому нужно сгенерировать исключение, чтобы выкинуть из цикла серию вызовов.

Одной из альтернатив является Response.Close(), но это также не останавливает этапы выполнения, и, вероятно, у вас есть другая ошибка, если вы попытаетесь отправить что-то после закрытия соединения с браузером. если вы делаете Response.Close(), вам также нужно сделать Flush() непосредственно перед его вызовом, иначе браузер получит непредсказуемые данные.

вы также можете прочитать: Перенаправить на страницу с endResponse на истинный VS CompleteRequest и ветку безопасности

Ответ 2 · рейтинг 4 · Viishnuu

Используйте условие перед загрузкой файла Response.IsClientConnected -

if (Response.IsClientConnected)
 {
    Response.Clear();
    Response.ClearContent();
    Response.ClearHeaders();
    Response.ContentType = "Application/pdf";
    Response.AppendHeader("Content-Disposition", "attachment; filename=" + fileName);
    Response.TransmitFile(Server.MapPath(@"yourpath" + fileName));
    Response.Flush();
    Response.Close();
  }

У меня это хорошо работает после долгой борьбы. Надеюсь, это сработает и для вас.

Ответ 3 · Pit J

Нет! Тебе нельзя! Ты сможешь

Response.SuppressContent = true;

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы