2

ASP.Net AJAX を使用してコールバック メソッドを実装しましたが、このコールバックが別のページで発生したときにリダイレクトしたいと考えています。コールバックからのリクエストではリダイレクトできないため。エラーが発生します"Response.Redirect cannot be called in a Page callback"

発生したコールバック イベントに対して一般的にコールバック リダイレクトを行うにはどうすればよいですか?? たとえば、RadComboBox に入力された文字ごとにサーバーへのコールバックを実装する RadComboBox があります。RadComboBox のアイテムを要求しているときに、セッション タイムアウトが発生し、アプリケーションを別のページにリダイレクトする必要があるとします。これについてどうすればいいですか?

コールバックで、次のようなスクリプトを実行できない場合ScriptManager.RegisterStartUpScript(this.gettype(),"script","Do javascript redirect to session timeout page ?",true);

これを回避する唯一の方法は、MasterPage Load メソッドにチェックを追加して、セッションがタイムアウトしたかどうかをチェックし、HttpCookie に追加してから、MasterPage html に値をチェックするタイムアウト間隔を持つ JavaScript メソッドを追加することです。別のページにリダイレクトできるようにクッキーに?! . 現在、このメソッドは常に実行する必要があり、おそらくパフォーマンス関連の問題が発生する可能性があります??

リクエストがコールバックからのものである間にリダイレクトを達成できる他の方法はありますか? Response.RedirectLocation を試してみましたが、効果がないようですか?

4

2 に答える 2

1

私が取り組んでいる Web プロジェクトは、セッション タイムアウトのリダイレクトを実装しています 私が直面していた問題は、セッションがタイムアウトした場合のコールバック中に、このエラーが発生することでした。

セッションタイムアウトをチェックするための私の実装は、ログイン中にセッション変数を設定し、各ページロード中にこのセッション値が null であることを確認し、タイムアウトタイムアウト以降にログインにリダイレクトすることです。したがって、解決策として、「セッションがタイムアウトしました」というコールバックを引き起こすコントロールにメッセージを表示し、セッションタイムアウトをチェックするマスターページにコードを追加して、ログインページにリダイレクトできるようにしました。

//--------------------------------------------------------------------------
    protected override void OnLoad(EventArgs e)
    {
        if (!Page.IsCallback)
        {
            Response.Redirect("~/Login.aspx",true);
        }
于 2013-12-03T14:28:12.673 に答える