IIS7 Integrated Pipeline - Response.End не заканчивает запрос

У меня есть следующий фрагмент кода, который работал, как и ожидалось, до того, как мы обновили интегрированный конвейер в IIS7.

public void RedirectPermanently(string url, bool clearCookies)
{
  Response.ClearContent();
  Response.StatusCode = 301;
  Response.AppendHeader("Location", url);
  if(clearCookies)
  {
    Response.Cookies.Clear();
    Response.Flush();
    Response.End();
  }
}

Ранее, когда этот метод выполнялся, если clearCookies был равен true, ответ отправлялся клиенту, и обработка запроса заканчивалась. Теперь под Integrated Pipeline Response.End(), похоже, не заканчивается обработка. Страница продолжает работать, как если бы метод никогда не вызывался.

Большой вопрос, почему и что изменилось!

Благодарю.

1 ответ

Решение

Response.End будет только поднять ThreadAbortException когда HttpContext.IsInCancellablePeriod правда.

Один побочный эффект Response.Flush() это причины HttpContext.IsInCancellablePeriod стать ложным при выполнении в режиме интегрированного конвейера.

Попробуйте удалить Response.Flush() из вашего кода. Завершение ответа в любом случае приведет к сбросу потока ответа.

Другие вопросы по тегам