2

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

最大的问题是,为什么以及发生了什么变化!

谢谢。

4

1 回答 1

3

Response.End只有在为真ThreadAbortException时才会提高。HttpContext.IsInCancellablePeriod

的一个副作用Response.Flush()HttpContext.IsInCancellablePeriod在集成管道模式下执行时会导致错误。

尝试Response.Flush()从您的代码中删除。结束响应将导致响应流被刷新。

于 2010-03-23T21:29:14.307 回答