IIS7集成管道 - Response.End没有结束请求

时间:2010-03-23 21:18:59

标签: iis-7 integrated-pipeline-mode

在我们升级到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()下似乎没有结束处理。页面继续运行,就好像从未调用过该方法一样。

很大的问题是,为什么和改变了什么!

感谢。

1 个答案:

答案 0 :(得分:3)

Response.End只会在ThreadAbortException为真时提升HttpContext.IsInCancellablePeriod

Response.Flush()的一个副作用是导致HttpContext.IsInCancellablePeriod在集成管道模式下执行时变为false。

尝试从代码中删除Response.Flush()。结束响应将导致响应流无论如何都被刷新。