私はこれについて多くを知ることができませんでした…</p>
クエリ文字列を使用して別の場所のコードから呼び出されるASPページがあります。
[domainpath]/FulfilmentReceipt.aspx?fulfilmentId=226F7486-3D30-439D-92BB-94972234A809
応答の実行を別のクエリ文字列を持つ別のページに移動する必要がPage_Load
ある呼び出しがあります(以下は正常に機能しているようです)。Server.Transfer
Format()
Server.Transfer(String.Format("confirmationReceipt.aspx?bId={0}&f={1}&print=true", basketId, franchiseeId)))
次に、私にはわからないことがあります。転送呼び出しは、最初のページであるFulfilmentReceipt.aspxにルーティングされているように見えますが、新しいクエリ文字列が使用されています。fulfilmentId
クエリ文字列の一部が欠落しているため、これによりエラーが発生します。なぜこれがconfirmationReceipt
期待どおりに呼び出されないのですか?
confirmationReceipt
プロセスにデバッグすることでページが呼び出されず、fulfilmentReceipt
2回読み込まれることを確認できます。Global.asaxファイルにはコードがまったくないため、そこへのルーティングはなく、confirmationReceipt
ページ自体にはRedirect
またはTransfer
呼び出しがなく、非常に単純です。
さらに、ブラウザのアドレスバーに表示されるエラーページには、新しいクエリ文字列が元のURLの一部として表示されます。表示されたURLは、の結果として変更されるべきではないと思っていましたServer.Transfer
。
何か案は?
どうもありがとう。
アップデート
私は実際の進歩はありませんでしたが、Richthofenのアドバイスに従うとある種の結果が得られました。DOESのResponse.Redirect
代わりに使用すると、ブラウザからの呼び出しで望ましい結果が得られます。Server.Transfer
ただし、呼び出しは、リダイレクト応答を処理できないサードパーティのライブラリによって行われます。
Server.Transfer
このpreserveForm
オプションを試してみても違いはありません。明確にするために、転送は最終的にを呼び出しFulfilmentReceipt.aspx?bId={0}&f={1}&print=true
ます。間違ったページ、正しいクエリ文字列。
より多くの更新
confirmationReceipt
渡されたクエリ文字列を受け入れるようにページをリファクタリングし、クエリ文字列を指定せずに単純に転送するように呼び出しをfulfilmentReceipt
変更することで、問題を解決しました。転送は、元のクエリ文字列で適切な場所に移動します。Server.Transfer
confirmationReceipt
好奇心からはまだ疑問が残ります。Server.Transfer
クエリ文字列を含むURLを正しく処理できないのは単純ですか?