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

の副作用の1つResponse.Flush()HttpContext.IsInCancellablePeriod、統合パイプラインモードで実行するとfalseになることです。

Response.Flush()コードから削除してみてください。応答を終了すると、とにかく応答ストリームがフラッシュされます。

于 2010-03-23T21:29:14.307 に答える