ASP.NET - 异步回发后处理重定向

时间:2011-06-27 11:57:21

标签: asp.net-ajax pagerequestmanager

我有一个使用更新面板的ASP.NET Web应用程序。 Web应用程序集成在SiteMinder SSO环境中。

当Siteminder认为是时候重新验证用户时,会出现问题。 当用户执行导致异步回发的操作时,Siteminder会捕获此请求并向其登录页面发回重定向响应。

我的ASP.NET页面不期望这样,并抛出PageRequestManagerParserErrorException。

我的猜测是我必须在客户端代码中捕获此重定向响应(使用PageRequestManager事件?)并正确处理重定向。

但是怎么样?

1 个答案:

答案 0 :(得分:1)

我有同样的问题。我在这里找到了一个解决方案:http://forums.asp.net/t/1470176.aspx/1

我最终在每个页面上都有以下javascript:

function pageLoad() {
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
}

function EndRequestHandler(sender, args) {
    if (args.get_error() != undefined) {
        if (args.get_response().get_responseData().indexOf("<HTML><HEAD><TITLE>") == 0) {
            args.set_errorHandled(true);
            __doPostBack("", "");
        }
        else {
            // not my error so let the default behavior happen
        }
    }
}

它会使页面完全停止,但是一旦SSO在客户端上超时,它就会执行整页刷新而不是异步回发。