C# 会话在关闭jquery对话框后过期

C# 会话在关闭jquery对话框后过期,c#,jquery,asp.net,C#,Jquery,Asp.net,在我的web应用程序中,我使用jquery对话框打开弹出窗口。 用于执行此任务的功能如下: function OpenPopup(popupTarget, width, height, params, onOpenFunction, onCloseFunction, popupElement){ // some code to parse the parameters //`popupElement` is a div with `style="display: none;"` // incl

在我的web应用程序中,我使用jquery对话框打开弹出窗口。 用于执行此任务的功能如下:

function OpenPopup(popupTarget, width, height, params, onOpenFunction, onCloseFunction, popupElement){

// some code to parse the parameters
//`popupElement` is a div with `style="display: none;"`
// included in a master page which every page inherits from

    $(popupElement).dialog(
{
    autoOpen: false,
    resizable: false,
    height: height,
    width: width,
    modal: true,
    open: onOpenFunction,
    closeOnEscape: false,
    close: function (e)
    {
        var popupResult = $(this).dialog("option", "notification");

        $(this).dialog("destroy");

        if (!isHTMLElement)
            popupFrame.css("visibility", "hidden");

        if (jQuery.isFunction(onCloseFunction))
        {
            var funct = eval(onCloseFunction);
            funct(popupResult);
        }
    }
});

$(popupElement).dialog("open");
}
这是调用上述方法的函数:

function FiltroNotifiche(){
params = "";

OpenPopup("~/manage/Popup/FiltroNotifiche.aspx", 450, 350, params, function (e) { }, function (strNotification)
{
    OnPopupReturn(true, strNotification, function ()
    {
        __doPostBack('UpdatePanel', 'Filtro=true');
    });
});
}

function OnPopupReturn(bRefresh, strNotification, senderFunction){
// this function parses strNotification and if, successful, calls:
    var funct = eval(senderFunction);
    funct();

}
在弹出窗口中,我使用
ICallbackEventHandler
回调接口

问题是,在打开和关闭弹出窗口(我可以看到正在执行回调和所有操作)之后,无论我接下来做什么,我都会被踢出,很可能是因为会话已过期

我注意到的一件奇怪的事情是,只有当我通过菜单控件到达打开弹出窗口的页面(GestioneNotifiche.aspx)时才会发生这种情况,因为如果我通过另一个页面中的按钮PostBackUrl到达该页面,这种情况就不会发生,会话也会愉快地进行

菜单具有xml数据源和以下绑定:

<DataBindings>
  <asp:MenuItemBinding DataMember="Menu" TextField="Text" Selectable="false" />
  <asp:MenuItemBinding DataMember="MenuItem" NavigateUrlField="NavigateUrl" TextField="Text" ValueField="Value" />
</DataBindings>

这是菜单项:

我确实注意到,通过菜单调用的是
Request.HttpMethod=“GET”
,而通过回发调用的是(相当明显的)
“POST”
。这可能是最重要的吗?我真的不知道GET和POST之间的区别


谢谢

听起来您的问题是身份验证正在被清除,而不是您的会话。检查页面加载事件,查看GET和POST请求之间是否存在导致清除身份验证的差异。

听起来您的问题在于身份验证正在被清除,而不是会话。检查页面加载事件,查看GET和POST请求之间是否存在导致清除身份验证的差异。

是什么让您认为会话实际上已过期。在被“踢出”后,你能回到地址并使用debug,检查会话是否包含你希望它包含的变量吗?使用“踢出”我的意思是我被重定向到我的应用程序的登录页面;我不能简单地键入地址并重新加载页面,因为您的身份验证似乎正在被清除…而不是会话。页面加载中是否有一些代码用于确定用户是否经过身份验证,如果没有,则重定向?如果是的话,把它贴进去。你是对的。代码嵌套太多,无法解释清楚,但问题是在onunload事件期间调用了触发注销的函数。谢谢你为我指明了正确的方向!我添加了一个答案,这样你们就可以把它标记为一个答案。是什么让你们认为会话实际上已经过期了。在被“踢出”后,你能回到地址并使用debug,检查会话是否包含你希望它包含的变量吗?使用“踢出”我的意思是我被重定向到我的应用程序的登录页面;我不能简单地键入地址并重新加载页面,因为您的身份验证似乎正在被清除…而不是会话。页面加载中是否有一些代码用于确定用户是否经过身份验证,如果没有,则重定向?如果是的话,把它贴进去。你是对的。代码嵌套太多,无法解释清楚,但问题是在onunload事件期间调用了触发注销的函数。谢谢你为我指明了正确的方向!我添加了作为答案,以便您可以将其标记为答案。