2017-08-22 6 views
1

Redirect.Responseは()クエリ文字列を落としている

Response.Redirect(urlWithQueryParams, false) 

urlWithQueryParams「ではlocalhost /フォーム/確認?形式=%7BE92EB767-8BB6-44F1-A4C9-を呼び出し、なぜ私が考え出すの問題を抱えています9CDB2C2DBCCC%7D & id = 8454DDBC072C49A48AD116019A9D5824 &値= gESO%2BDDBGEAA7eZMz2JqHQ%3D%3D "は、リダイレクトが発生したときにURLの一部であるすべてのクエリパラメータを削除しています。私は現在、そのように呼び出すことは、ユーザーがフォームを送信してトリガされるリダイレクトするたびにスローされるようにThreadAbortAbortExceptionを引き起こしている、

しかし
Response.Redirect(urlWithQueryParams); 

としてリダイレクトを設定しています。私はSOの記事があった場合にFALSEフラグを追加し、

HttpContext.Current.ApplicationInstance.CompleteRequest(); 

ていることに従うことを言ってしかし、私は偽のフラグを追加するたびに、ページが適切なページにリダイレクトしますが、一緒にクエリのparamsをドロップカップルを見つけました方法。ユーザーがリダイレクトされる確認ページには、適切に表示されるためにそれらのパラメータが必要です。この問題の原因を示すものは何も見つかりません。誰もこの問題に直面したことはありませんか?

+0

... - あなたは、クエリ文字列を失う理由endResponseだけAbortCurrentThread();を呼び出す処理を「終了」しているため

また、それは奇妙です完全で検証可能な例](https://stackoverflow.com/help/mcve)を参照してください。私たちがあなたを助けてくれるのは簡単です。 – mscheker

+0

@mschekerはそれを短くしてポイントにしました!うまくいけば助けてくれます。 – themillennialdev

答えて

0

これが私のやり方です。要するに、なぜRedirect to a page with endResponse to true VS CompleteRequest and security thread

try 
{ 
    // this is throw the ThreadAbortException exception 
    Response.Redirect(stringUrl, true); 
} 
catch (ThreadAbortException) 
{ 
    // ignore it because we know that comes from the redirect 
} 
catch (Exception x) 
{ 
    // log the error 
} 

私はここで説明し、あなたがページの処理を停止するため、例外は正常であり、我々は、2つの理由のためにそれを行うにしたいです。 1)セキュリティのため、2)必要のない残りのCPU処理を停止するだけです。おそらく、スレッドの残りの部分にいくつかのコードが何かを追加で、[最小を作成してください

+0

両方の答えに2つの否定的な票があると、少なくとも理由と、スレッドを中止した場合の問題点が示されます。また、スレッドを停止しないときにセキュリティの問題をチェックしてください。ページを実行するスレッドを停止する必要があります - なぜそれは悪いですか?スレッドは例外を除いてのみ停止されます... – Aristos

+0

本当にここで答えを理解していれば、処理を停止しないとセキュリティの問題が発生します... https://stackoverflow.com/questions/14641143/redirect- to-a-page-to-end-to-true-vs-completerequest-and-security-thre/14641145#14641145 – Aristos

関連する問題