goo blog サービス終了のお知らせ 

本能の赴くままに

本能の赴くままに、琴線に触れた事などを綴ります。

Server.TransferとResponse.Redirectの違いについて

2009年05月05日 10時43分16秒 | ASP.net
 Response.Redirectを使用すると、いったんリダイレクト元のPageオブジェクトからHTTPレスポンスがクライアントに返されてからリダイレクト先のURLに対してHTTPリクエストが行われます。つまりリダイレクト前とリダイレクト先のページとの間のリクエストとレスポンスのやりとり(ラウンドドリップというらしい)が2回行われることになります。一方Server.Transferはサーバー内部でリダイレクト先へ制御を移して処理を行うので、ラウンドドリップは1回で済みます。

 プロキシタイムアウトの回避方法で、タイマーで空文字をResponseで飛ばし続ける処理を記述している画面からResponse.Redirectで画面遷移ができませんでした。
そこはServer.Transferで画面遷移を実現した経験があります。

ページリダイレクトの使い方
 ASP.netにおけるページリダイレクトでは、基本的にはServer.Transferを使用してページ遷移を行う方がよいらしいです。ただし、Server.Transferでリダイレクトできるページはリダイレクト元のページと同じサーバー且つ同じASP.netアプリケーションである必要があります。別のサーバ上のページへリダイレクトする必要がある場合はResponse.Redirectを使うとよいでしょう。