C# 会话在关闭jquery对话框后过期
在我的web应用程序中,我使用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
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事件期间调用了触发注销的函数。谢谢你为我指明了正确的方向!我添加了作为答案,以便您可以将其标记为答案。