Response.重定向不能在会话超时的页面回调中调用

Response.Redirect cannot be called in a Page callback on session timeout?

本文关键字:回调 调用 超时 重定向 不能 会话 Response      更新时间:2023-09-26

我已经使用 AJAX 实现了一个回调方法 ASP.Net 并希望重定向到此回调何时发生到另一个页面。由于从回调请求时无法重定向。我收到错误"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 方法,该方法检查 cookie 中的值,以便它可以重定向到另一个页面?!.现在,此方法需要一直运行可能会导致一些与性能相关的问题?

当请求来自回调时,还有其他方法可以实现重定向吗?我已经尝试了响应重定向位置,但似乎没有效果?

我从事的 Web 项目实现了会话超时时的重定向我面临的问题是在回调期间,如果会话超时,它曾经导致此错误。

我检查会话

超时的实现是在登录期间设置一个会话变量,并在每次页面加载期间检查此会话值是否为 null,然后在超时超时后重定向到登录。所以现在作为一种解决方案,我在控件中显示一条消息,导致"会话超时"的回调,在我的母版页中检查会话超时添加代码,以便它可以重定向到登录页面之前有一个检查。

//--------------------------------------------------------------------------
    protected override void OnLoad(EventArgs e)
    {
        if (!Page.IsCallback)
        {
            Response.Redirect("~/Login.aspx",true);
        }

你可以尝试Server.Transfer方法,看看它是否炒锅。

另一种选择是将 True/False 发送回客户端,并具有接受此内容并进行重定向的 javascript 方法。

下面是一个如何使用jQuery调用服务器端方法并接受其结果的示例。

http://www.asp.net/ajaxlibrary/jquery_webforms_retrieve_data_from_pagemethod.ashx