PRB: Response.End、Response.Redirect、または Server.Transfer を使用すると、ThreadAbortException が発生します。

現象

Response.Endアクセス、使用している場合または
Server.Transferメソッドでは、 ThreadAbortException例外が発生します。Try-catchステートメントを使用すると、この例外をキャッチします。

原因

Response.Endメソッドでは、ページの実行を終了し、アプリケーションのイベント パイプラインの出力イベントを実行をクリックします。Response.Endを次のコード行は実行されません。

この問題は、両方のメソッドが内部的に際に、Response.Endを呼び出すために、アクセスおよびServer.Transferメソッドで発生します。

解決策

この問題を回避するには、以下のいずれかの方法を使用します。

  • 際に、Response.End出力イベントにコードの実行をバイパスする際に、Response.Endの代わりにHttpContext.Current.ApplicationInstance.CompleteRequestメソッドを呼び出します。
  • アクセス、オーバー ロード、 false を指定際に、Response.Endの内部呼び出しを抑制するのには、 endresponse メソッドのパラメーターに渡されるアクセス (文字列の url、ブール値の endresponse メソッド)を使用します。次に例を示します。
      Response.Redirect ("nextpage.aspx", false);
    この回避策を使用する場合は、アクセスに依存するコードが実行されます。
  • Server.TransferServer.Executeメソッドを代わりに使用します。

状況

これは仕様による動作です。
プロパティ

文書番号:312629 - 最終更新日: 2017/02/01 - リビジョン: 1

Microsoft ASP.NET 4.5, Microsoft ASP.NET 4.0, Microsoft ASP.NET 3.5, Microsoft ASP.NET 2.0, Microsoft ASP.NET 1.1, Microsoft ASP.NET 1.0

フィードバック