2009-05-08 23 views
1

は、私も私のアプリでreponse.directを使用していますが、私は例外を取得していない午前http://support.microsoft.com/kb/312629/EN-US/Server.TransferのとSystem.Threading.ThreadAbortException

を参照してください。ナレッジベースの記事(Server.Execute)が提案する回避策は、私のためには機能しません。私はServer.Executeを使用すると、ターゲットページのAjax ToolkitからJavascriptの例外をたくさん取得していますが、原因を掘り下げませんでした。

私の質問 - 「既知の制限」として例外を飲み込んで移動するのに対して、どのような議論がありますか?

この1つの非常に特殊なケースでServer.Transferを使用する私の理由は、実際に実行されているページの(実際の)ターゲットURLをマスクしたいということです。この例外を除いて(ユーザーが見ることはない)、かなりうまく動作します。

答えて

5

例外ハンドラ(try..catch/finally)内でServer.Transfer()を呼び出さないようにしてください。

編集:

Server.Transferのは、常に完了時にThreadAbortExceptionのを発生させます。例外ハンドラでラップする場合は、 '例外'の代わりに明示的な例外の種類をトラップする必要があります。

Server.Transferのヘルプ(MSDN)を参照してください。ここにはThreadAbortExceptionに関する情報があります。

+0

なぜですか?私が元のページでそれをキャッチしなければ、例外は呼び出しを生き残ります。 – cdonner

+0

更新された回答を参照してください。 –