Webページの遷移について(相違編)

1つ前の日記でどちらも遷移はする。ということは確認できたと思います。では、何が違うのか書いて行きたいと思います。シンプルに言うと、

  • Redirectはクライアントによる処理(Response.Redirect)
  • Transferはサーバーでの処理(Server.Transfer)

と言う事です。
リンク貼ってくださったのでそっちから引用しますか(笑)

  • Redirectメソッドが呼び出されると、ユーザーからはポストバックが1度だけ行われたように見えるが、実際には2度のラウンド・トリップが行われ、その間に最初にポストした情報は失われてしまう。従って、Redirectメソッドを使っても、別ページへのポストバックを実現することはできない。

  • Transferメソッドの場合は、それを呼び出しただけではレスポンスが生成されることはなく、そのままサーバ上で指定されたページへと処理が移行される。つまり、ラウンド・トリップは1度だけなのに、2つのASP.NETページが連続して処理されることになる。このため、最初にポストバックされているsampleA.aspxが実行されていたときに生成されたオブジェクトは、まだメモリ上に残されていて、移行先のsampleB.aspxからアクセスできる。

連載 プログラミングASP.NET ―ASP.NETによるWebアプリケーション実践開発講座― :第16回 ASP.NETにおけるページの遷移 (1/4) - @IT

以上の事からTransfer・Redirectの機能の違いがわかったと思います。

注意点として、TransferはYahoo!等の外部のサイト(フルパスが必要なサイト)へ遷移する事は出来ないと言うことです。同一サーバ内でのみ活用する事ができるメソッドです。そして、Redirectとの使い分けはそれが重要になってきます。そしてもう1つ、Transferは同一サーバ内の.aspxファイルにしか遷移する事が出来ません。.aspや.asmx等のファイルには遷移する事が出来ないのを覚えておいてください。以上の事に注意すれば、Transferを有効に活用できるのではないでしょうか?逆に同一サーバ内にアクセスする時Redirectを使うメリットが余り無い時は積極的にTransferを使いましょう。

Redirectは上からも解るように異なる拡張子、外部のサイトへと遷移する事も可能です。


以上が私が調べたTransferとRedirectの違いと注意点です。未だにASP.NETに触れていなくて詰まってしまった時上に記述した事が役に立てれば幸いです。