在我们升级到IIS7中的Integrated Pipeline之前,我有以下一些代码可以正常工作。
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()下似乎没有结束处理。页面继续运行,就好像从未调用过该方法一样。
很大的问题是,为什么和改变了什么!
感谢。
答案 0 :(得分:3)
Response.End
只会在ThreadAbortException
为真时提升HttpContext.IsInCancellablePeriod
。
Response.Flush()
的一个副作用是导致HttpContext.IsInCancellablePeriod
在集成管道模式下执行时变为false。
尝试从代码中删除Response.Flush()
。结束响应将导致响应流无论如何都被刷新。