Channel J

電脳硬化症気味な日記です。まとまった情報は wiki にあります。

2006.3.7 (Tuesday)

at 16:09  

ASP.NET 2.0のServer.Transfer()   [ICTメモ]

Server.Transfer(url); を使うと、ThreadAbortExceptionが発生する。
仕様らしいです。
 さらに、ThreadAbortExceptionは、そのままだと、catchしても自動的に再throwされてしまいます。Thread.ResetAbort(); すると、同スレッド内のその後の処理も許可されて、再スローはしなくなりますが、例外発生ログは相変わらず出力されます。
 キレてもいいですか?(^^;;

try
{
context.Server.Transfer(url);
}
catch (ThreadAbortException)
{
//Debug.WriteLine("System.Threading.ThreadAbortException 発生");
Thread.ResetAbort();
}
catch (Exception e)
{
Debug.WriteLine("例外 発生");
throw e;
}

なので、単純に、Server.Transfer(url)ではなく、Server.Execute(url) に変更することにした。ページ間のパラメータ移行などにも影響がないことを信じて…。


« ニンテンドーDSからPCをコントロ… Clip to Evernote
ASP.NET 2.0 »
  trackback:    



Go back.