-Page_Loadを使用するときに(または他のASP.NETイベント)からリダイレクトする方法はありますか?もちろんスローしますが、それをキャッチしても、エラーページが表示されます。私が呼んだ場合、それはクラッシュしませんが、ページの実行を停止する必要があるので(ページのレンダリングなど)、それは解決策ではありません。そして、私が気付いたように、これら2つの方法は異なる動作をします。asyncawaitRedirectThreadAbortExceptiontrycatchResponse("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にするだけでそれ以上は何もないと思いましたか?!