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()
из вашего кода. Завершение ответа в любом случае приведет к сбросу потока ответа.