在会话超时的页面回调中无法调用Response.Redirect?

时间:2013-09-13 06:52:53

标签: javascript asp.net javascript-events callback xmlhttprequest

我已经使用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加载方法中添加一个检查,检查会话是否超时并添加到HttpCookie然后在MasterPage html上添加一个具有超时间隔的javascript方法检查为cookie中的值,以便它可以重定向到另一个页面? ! 。现在,这种方法需要一直运行可能会导致一些性能相关的问题?

当请求来自回调时,还有其他方法可以实现重定向吗? 我已经尝试过Response.RedirectLocation但似乎没有效果?

2 个答案:

答案 0 :(得分:1)

我工作的Web项目在会话超时时实现重定向 我遇到的问题是在回调期间,如果会话超时,则会导致此错误。

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

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

答案 1 :(得分:0)

您可以尝试使用Server.Transfer方法查看是否已经开始。

其他选项是将True / False发送回客户端并使用javascript方法接受此方法并进行重定向。

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

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