緑が与えられた場合、赤を呼び出すことができる状況はありますか?
2 に答える
これは単体テストのカバレッジのように見えますが、メソッド自体が返されていないため、コードに到達する必要があります。ただし、使用している自動テストが実際に HTTP コンテキストに参加している場合、応答が終了すると他のコードには到達しません。
に渡すことで、応答が終了しないようにすることができfalse
ますRedirect()
。
Response.Redirect(PageRedirect, false);
ただし、これはおそらく悪い考えです。このコードが行っていることの論理的な流れを考えてみましょう。リダイレクトは応答を終了する必要があります。実行するサーバー側の処理がさらにある場合は、終了しないことを選択できますが、これは多くの場合、かなり直感的ではありません。しかし、そのサーバー側の処理が別の redirectである場合、それは何をすることになっているのでしょうか? ユーザーを 2 回リダイレクトしますか? 1 回リダイレクトして 2 回目は無視しますか? 最初のリダイレクトを無視して 2 番目のリダイレクトを実行しますか? それはかなり直感的ではありません。
応答がリダイレクトで終了するようにコードを整理することをお勧めします。技術的にはreturn
from メソッドではありませんが、このコンテキストでは、論理的にはメソッドのように扱う必要があります。
一度もない。
ほとんどのコード アナライザーは、HttpResponse.Redirect(url)
が実行されなかった後はコードを理解できません。そのため、コンパイラー/アナライザーは、赤色のコードが間違っている可能性があると文句を言うでしょう。
実際にはThreadAbort
、リクエスト処理コードを誤って実行することを避けるために、常に例外をスローします - HttpResponse.Redirect。