web-dev-qa-db-ja.com

ASP.NetでのTransferRequestとTransfer

私は以下のリンクを通り抜けました、

iisフォーラム および HttpModules&Server.Transfer/Server.TransferRequest/RewritePathの問題 。しかし、これらの転送方法の背後にある概念を理解することはできません。

それらはどのように機能しますか?そして、どちらが異なる状況で好まれますか?

誰かがasp.netのサーバー側転送のTransferRequestとTransferメソッドとその役割を説明できますか?

前もって感謝します

21
Sujit

HttpServerUtility.Transfer 現在のページの実行を終了し、指定されたURLの実行を開始します。これは基本的に、提供されたURLに対応する新しいASP.NETページをマップして実行します(または静的ファイルを提供します)。これは、新しいURLに新しい構成を適用したり、新しいURLに対してIISモジュールを再実行したりすることなく、現在のリクエストパイプラインでインプレースで実行されます。このため、非常に高速ですが、また、TRQで発生する可能性のある多くのシナリオを防ぎます。

HttpServerUtility.TransferRequest 指定されたURLの非同期実行を実行します。これは完全なIIS子リクエストです。これにより、新しいリクエストのリクエストパイプライン全体を、別のリクエストであるかのように再実行して、正しい構成を取得できます。そして、認証、承認などを含む通常のすべてのIISモジュールを実行します。たとえば、IISは、ではなく、新しいURLに承認ルールを適用します。前のURL。

24
Sujit

TransferRequest 個別のリクエストであるかのように、リクエストパイプライン全体を再実行します。これは、IISおよびASP.NETモジュールが再適用され、新しいURLの認証および承認ルールが尊重されることを意味します。TransferRequestにはIIS 7+であり、転送はASPページまたはXMLファイルなどの別のリソースに行うことができます。

Transfer 実行を1つのASPページから別のページに転送しますASPサーバー上のページ。TransferRequestとは異なり、IISおよびASP.NETは、現在のユーザーがTransferメソッドによって配信されたリソースを表示する権限を持っていることを確認しません。再承認を強制する必要があり、統合パイプラインモードがオプションでない場合は、 リダイレクト を呼び出します。 = Transferメソッドの代わりに。Redirectはクライアント側のリダイレクトをトリガーして、新しい要求がIISおよびASP.NETのすべての認証および承認ロジックの対象となるようにします。

7
Robert Claypool