Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
几次window.open调用后,我的ASP.NET会话超时_Asp.net_Session_Cookies_Internet Explorer 8_Timeout - Fatal编程技术网

几次window.open调用后,我的ASP.NET会话超时

几次window.open调用后,我的ASP.NET会话超时,asp.net,session,cookies,internet-explorer-8,timeout,Asp.net,Session,Cookies,Internet Explorer 8,Timeout,我有一个ASP.NET应用程序,它使用StateServer会话模式,cookieless设置为false。在一些地方,会弹出一个指向另一个应用程序的窗口链接(该应用程序恰好位于同一个域中,但位于不同的虚拟目录中)。下面的步骤让我感到悲伤 启动弹出窗口 关闭弹出窗口 使用两个不同的参数将弹出窗口启动到与以前相同的应用程序 关闭弹出窗口 下一个请求=父窗口上的会话超时 使用无cookie会话解决了这个问题,所以我的cookie不知怎么会被浏览器弹出。除了使用无cookieless会话之外,如何解决

我有一个ASP.NET应用程序,它使用StateServer会话模式,cookieless设置为false。在一些地方,会弹出一个指向另一个应用程序的窗口链接(该应用程序恰好位于同一个域中,但位于不同的虚拟目录中)。下面的步骤让我感到悲伤

  • 启动弹出窗口
  • 关闭弹出窗口
  • 使用两个不同的参数将弹出窗口启动到与以前相同的应用程序
  • 关闭弹出窗口
  • 下一个请求=父窗口上的会话超时
  • 使用无cookie会话解决了这个问题,所以我的cookie不知怎么会被浏览器弹出。除了使用无cookieless会话之外,如何解决这个问题?不管它值多少钱,我正在用IE8开发/测试

    编辑


    似乎只有当弹出窗口位于同一个域上时才会出现问题。如果我在其他地方弹出一个页面,就没有问题。

    是否有可能其他应用(在同一个域上)正在设置自己的cookie,覆盖您的主应用的cookie?您可以使用fiddler(或类似工具)查看哪些应用程序正在设置哪些cookie吗?

    检查您的应用程序的所有实例

    Session.Clear(); Session.Abandon(); Session.Clear(); 会话。放弃(); 如果您根本不使用这些,那么很可能您的浏览器窗口被设置为不在用户之间共享会话。因此,新实例将获得一个新的会话cookie(因为它与前一个cookie的名称相同,所以它可能会杀死现有的会话cookie),就像在游戏中一样:

    理想情况下,跟踪设置Cookie头出现在哪个页面。然后查看进入该响应的请求,看看是否发送了当前的ASP.NET_会话ID cookie。(小提琴手确实是最好的工具) 无论如何-这是一个尝试的开始。

    编辑显然这不是你的cookie名称,所以。。。 也许您应该在母版页上调用AJAX,在web应用程序上ping一个服务(或通用处理程序),以保持会话活动

    JavaScript

    window.setInterval(function() { 
        $.get('ping.ashx?nocache=' + (new Date()).getTime(), function() { 
            return true; 
        })
    }, 30000);
    
    在通用处理程序中,确保添加IRequireResessionState标记接口

    也许您的会话cookie名称相同

    在web.config中(对于其中一个应用程序),更改会话cookie名称

    <sessionState
    mode="StateServer"
    timeout="20"
    cookieName="DifferentASP.NET_SessionId"
    

    会话超时设置为什么?无论设置为什么,这种情况都会立即发生吗?设置为60分钟,是的,无论我设置了多高/多低,这种情况都会发生。IE8也有同样的问题,我们也找不到解决办法。您的测试用例是可复制的,因为我们不能按需复制吗?我也有这个问题。我希望有人知道一个解决方案或解决办法。好吧,这适用于其他有这个问题的人。FWIW,在过去的两年中,我们已经对这个问题进行了至少一次修复,所以最初的问题可能已经得到了很长时间的修复。顺便说一句,你可以在不同的应用程序中为你的cookie设置不同的cookie域,以防止在你弄清楚哪个应用程序正在执行此操作后出现踩踏。请参见记住,除非您指定,否则domain.com将向sub.domain.com发送cookie