わかりました、私は特に紛らわしい問題を抱えており、それを修正するための最善の選択肢がわかりません. ボタンのあるasp.netページがあり、ボタンのハンドラーが(すぐに制御できない/修正できない理由で)完了するまでに時間がかかることがあります。ハンドラーの最後に、Response.Redirect 呼び出しがあります。ボタン ハンドラーの実行中にユーザーが [更新] をクリックすると、ボタンを押したときのハンドラーの実行が終了します (正常) が、Response.Redirect を処理する代わりに、ページがリロードされます。
これが起こっていることを理解するのに永遠にかかりましたが、それを理解すると、非常に単純なサンプルコードでそれを再現することができました. VS 2010 (.Net 4 を対象) で新しい C# .Net Web プロジェクトを作成し、ホームページにボタンを追加しました。
<asp:button id="btnSubmit" runat="server" OnClick="btnSubmit_Click" text="Submit"/>
次に、10 秒間だけスリープするようにハンドラー コードを追加しました (リフレッシュする時間を与えるため):
protected void btnSubmit_Click(object sender, EventArgs e)
{
Thread.Sleep(10000);
Response.Redirect("about.aspx");
}
案の定、ボタン ハンドラーを実行すると (明らかに、期待どおり) 正常にリダイレクトされますが、その 10 秒間の Thread.Sleep 中に更新を押すと、response.Redirect は無視されます。
その Response.Redirect に従わせる方法を見つける必要があります。ユーザーが Refresh を押すことによってトリガーされる Page_Load イベントでそれを処理する必要があると感じています (つまり、「handling_button」などのように作成されるセッション変数を持つか、チェックして、検出された場合はリダイレクトするだけですページの読み込み、リダイレクトの場所に到達すると削除されます)、しかし、ここで見逃しているもので、もう少しエレガントなものがあることを願っています.