2016-05-18 8 views
2

私はResponse.Redirectに問題があり、たくさんの投稿を読んだにもかかわらず、私の特定の問題を解決できませんでした。Response.Redirectを使う正しい方法

私が取り組んでいるサイトは、Webサービスを介して第三者と統合しています。 Webサービスは期待どおりの結果を返します。その後、ハウスキーピングを行い、サードパーティの提供するURLにリダイレクトします。

はここで何が起こるかです:

我々は戻って特定の応答を取得する場合、我々は応答

  1. に提供されたリンクを経由して提携サイトにリダイレクトしたい我々は要求を作成し、応答を受信
  2. 私たちは、私たちが送るSystem.Netを使用してメールを送信し、データベースのSQL
  3. を更新

上記の後、リダイレクトする必要があります。

Response.Redirect(resp.RedirectUrl, false); 
Context.ApplicationInstance.CompleteRequest(); 

正しいアプローチであると思われるものを使用するにもかかわらず、私の第三者は、私たちが失敗したリダイレクトの高い割合を取得していることを私に知らせます。コードツリーの上位には、エラーを捕捉することがたくさんあるため、この時点までにリダイレクトするだけのケースになるはずです。

これは私たちの最後にあるわけではないことを知っており、「誰」と「いつ起こっているか」を確立するためのパターンデータを要求しています。

私の側はできるだけ頑丈であることを保証するために、いくつか質問があります。

  1. 上記のアプローチに根本的な問題はありますか?
  2. より良いアプローチが使用できますか?
  3. 私は/事前に

感謝をテストしなければならない可能性がものはあります。

+0

あなたがリダイレクト要求ではなく、リダイレクト要求自体に渡しているURLに問題があるだろうと思われます。あなたが正しいURLをWebサービスから渡していると確信している場合、それは第三者側の問題であるようです。 – anothershrubery

+0

Context.ApplicationInstance.CompleteRequest();が必要ですか?コール? それを使わないで試してみてください。 あなたがしていることに本当に間違っていることは何もありません。私の推測では問題は彼らの終わりです。 –

+0

@anothershrubery - 私はちょうどその有効なUriを確認するためのチェックを入れている - 私はそれ自体があなたが記述する問題を止めることはできませんが、それは不正な形式のURLをフィルターに掛けることを知っている。 –

答えて

2

お聞かせあなたがいることを信じているので、おそらく(テストされていないサイトの実行および他のコード(ライン上の休息とページのライフサイクルイベントの残り)実行されてリダイレクトされません)、またはいくつかのnullがあり、実際のリダイレクトの前に実行されるコードで例外が発生します。

あなたがThreadAbortException例外を取得していますが、制御停止とあなたのプログラムのさらなる実行を停止する必要があるものと

Response.Redirect(resp.RedirectUrl, false); 
return; 

あなたのプログラムのさらなる実行を停止することを、そのコードを使用してみてください。

相対 Redirect to a page with endResponse to true VS CompleteRequest and security thread

-1

ターゲットURLは、データベースに保存した後に第三者から受信するため、 'Response.Redirect'の代わりに 'Sever.Transfer'を使用することができます。

Response.Redirectは往復を引き起こす可能性があるため、遅延が発生します。

ターゲットURLは、アプリケーションサーバーからではなく、別のドメイン/ Webサーバーによって処理されます。

Server.Transferは、このリダイレクト操作に最​​適なオプションです。このコード

Response.Redirect(resp.RedirectUrl, false); 
Context.ApplicationInstance.CompleteRequest(); 

を使用して

+0

私は確かにこれを与えることができます。 –

+0

'Server.Transfer'を避けてください。サーバー転送が行うことは、あなたのページを処理するのにもっと多くの問題と困難をもたらします。ごくまれに、あなたがしていることを絶対に知っていて、他の選択肢を持たないでください。 (どんな場合でも@JohnOharaがテストして、あなたは私が何を意味するかを見ている...) – Aristos

関連する問題