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) に変更することにした。ページ間のパラメータ移行などにも影響がないことを信じて…。