2012-01-15 12 views
4

Server.Transfer VS Response.Redirectに関する多くのトピックが見つかりましたが、Server.TransferとResponseの違いについては説明していません。 書き換えServer.TransferまたはResponse.Rewriteを使用するタイミング

私が知る限り、彼らはユーザーをナビゲートするのと同じタイプの方法を使用しています。その違いは何ですか?

+0

可能な複製[どれがServer.TransferとResponse.Redirectより優れているか](http://stackoverflow.com/questions/5151439/which-one-is-better-server-transfer-and-response-redirect) – slugster

+0

重要な違いは、Response.RedirectがWebブラウザに戻って新しいURLにリダイレクトするように伝えることです。一方、Server.Transferはラウンドトリップなしでサーバー上の新しいページの処理を開始します。 –

+1

-1投票で回答を受け入れるのは間違いです。おそらく、これはより良い質問であるので、ここでは良い答えを得ることができ、これに対してもう1つを閉じることができますか? (あるいは多分*デリケートな*複製をリンクすることができます...) –

答えて

0

Response.Redirectは、サーバーからクライアントへリダイレクトヘッダーを送信し、新しいURLへの別のリクエストを送信します(合計:2リクエスト)。

Server.Transferの場合、クライアントのリクエストは1つしか発生せず、ブラウザのアドレスバーのURLは変更されません。Response.Redirectとは異なり、ブラウザにリダイレクトの兆候がないため、 。

希望に役立ちます。

0

Server.Transferを使用して別のページに転送すると、サーバーリソースが節約されます。リダイレクトするようにブラウザに指示するのではなく、Webサーバー上の「フォーカス」を変更して要求を転送するだけです。つまり、非常に多くのHTTPリクエストが届くことはないため、Webサーバーへの負荷が軽減され、アプリケーションの実行速度が向上します。

ただし、「転送」プロセスはサーバー上で実行されているサイトでのみ機能するため、Server.Transferを使用してユーザーを外部サイトに送信することはできません。 Response.Redirectだけがそれを行うことができます。

第2に、Server.Transferは元のURLをブラウザに保持します。これは、デバッグ時に混乱を招く可能性がありますが、実際にデータ入力技術を合理化するのに役立ちます。

これはすべてではありません。Server.Transferメソッドには、第2パラメータ「preserveForm」もあります。これをTrueに設定すると、Server.Transfer( "WebForm2.aspx"、True)などのステートメントを使用すると、転送先のページで既存のクエリ文字列とフォーム変数を引き続き使用できます。

たとえば、WebForm1.aspxにTextBox1というTextBoxコントロールがあり、preserveFormパラメータがTrueに設定されているWebForm2.aspxに転送された場合、元のページのTextBoxコントロールの値を参照して取得できますRequest.Form( "TextBox1")。

簡単に言うと、Response.Redirectは単にブラウザに別のページを訪問するように指示します。 Server.Transferは、サーバーリクエストを減らし、URLを同じように保ちます。ちょっとしたバグを犯すだけで、クエリ文字列とフォーム変数を転送できます。

関連する問題