-Page_Load
を使用するときに(または他のASP.NETイベント)からリダイレクトする方法はありますか?もちろんスローしますが、それをキャッチしても、エラーページが表示されます。私が呼んだ場合、それはクラッシュしませんが、ページの実行を停止する必要があるので(ページのレンダリングなど)、それは解決策ではありません。そして、私が気付いたように、これら2つの方法は異なる動作をします。async
await
Redirect
ThreadAbortException
try
catch
Response("url", false)
これはThreadAbortExceptionで終わります(タスクは同期的に終了すると思います):
protected async void Page_Load()
{
await Task.Run(() => { });
Response.Redirect("http://www.google.com/");
}
これはResponse.Redirectの後も続きます:
protected async void Page_Load()
{
await Task.Delay(1000);
Response.Redirect("http://www.google.com/");
}
応答を待つ必要がありますが、実験していたため、await
キーワードを削除しても(つまり、タスクがバックグラウンドで実行され、メソッドが続行されます)、同じ結果になります。役立つのはasync
キーワードを削除することだけです-私はasync
有効await
にするだけでそれ以上は何もないと思いましたか?!