C# 如何判断两个浏览器窗口是否共享其会话?
我们的许多内部和外部用户都启动了我们的web应用程序。然后在以后的某个时候,他们会从浏览器中打开一个新窗口。他们希望有两个独立的应用程序会话在运行。然而,通过这种方式,他们实际上使用的是相同的会话数据 在代码中,是否有方法确定是否有另一个浏览器窗口在同一会话中打开 我们使用的是VS2008、C#和/或VB.Net 谢谢 结合我下面的回答: 也许我说错了。当他们打开第二个窗口并将其更改为不同的小部件号,然后返回到原始窗口时,在下一次返回时,它将使用第二个窗口的小部件号,而不是它自己的小部件号C# 如何判断两个浏览器窗口是否共享其会话?,c#,asp.net,vb.net,C#,Asp.net,Vb.net,我们的许多内部和外部用户都启动了我们的web应用程序。然后在以后的某个时候,他们会从浏览器中打开一个新窗口。他们希望有两个独立的应用程序会话在运行。然而,通过这种方式,他们实际上使用的是相同的会话数据 在代码中,是否有方法确定是否有另一个浏览器窗口在同一会话中打开 我们使用的是VS2008、C#和/或VB.Net 谢谢 结合我下面的回答: 也许我说错了。当他们打开第二个窗口并将其更改为不同的小部件号,然后返回到原始窗口时,在下一次返回时,它将使用第二个窗口的小部件号,而不是它自己的小部件号 我们
我们正在使用IE7。他们没有共享相同的数据。在新浏览器窗口中启动新会话,并启动单独的数据库访问。它们不共享相同的数据。在新浏览器窗口中启动新会话,并启动单独的数据库访问。您可以在中检查标题,也可以在窗口中输出session.ID。会话是为每个浏览器实例而不是每个窗口创建的。您可以在中检查标题,也可以在窗口中输出Session.ID。会话是为每个浏览器实例而不是每个窗口创建的。
- IE8-在选项卡和浏览器实例之间共享会话;可以使用文件->新建会话命令启动新会话
- IE7-在选项卡之间共享会话,但不在浏览器实例之间共享会话
- Firefox-在选项卡和实例之间共享会话;另一个Firefox可以在不同的配置文件(Firefox.exe-P“profileName”-无远程)中启动,然后进行单独的会话
- IE8-在选项卡和浏览器实例之间共享会话;可以使用文件->新建会话命令启动新会话
- IE7-在选项卡之间共享会话,但不在浏览器实例之间共享会话
- Firefox-在选项卡和实例之间共享会话;另一个Firefox可以在不同的配置文件(Firefox.exe-P“profileName”-无远程)中启动,然后进行单独的会话
希望这能有所帮助。我测试应用程序的主要浏览器(即FF和Google Chrome)都默认使用相同的cookie集合,无论您是在新选项卡中打开重复网页还是在新浏览器实例中打开 结果是,默认情况下,两个不同的选项卡或同一浏览器的两个实例在服务器上看起来就像同一个会话 由于多个实例使用相同的cookie,服务器无法区分请求和请求,并将它们与相同的会话数据相关联,因为它们都具有相同的SessionID(假定基于cookie的SessionID) 一般来说,这种行为没有错,您必须有一个针对这种行为的良好商业案例,才能编写一个变通方案 我认为无法区分不同的浏览器选项卡和服务器端代码。可能有某种客户端脚本黑客会有所帮助 包含一个Html元刷新标记,这样各个选项卡至少可以定期更新自己,这会有帮助吗 另一方面,如果您所追求的是将一组用户/服务器交互视为一种“会话中的会话”,那么您可以通过在ViewState中存储一个随机Guid(或小部件编号)并在回发时检查它来做到这一点
希望这有帮助。更正:创建了一个新会话,因此它是一组新的会话日期。是的,如果用户使用Firefox,它们共享相同的会话数据。我相信所有其他浏览器都会在新的选项卡中实例化新会话。更正:创建了一个新会话,因此它是一组新的会话日期。是的,如果用户使用Firefox,则它们共享相同的会话数据。我相信所有其他浏览器都会在新的选项卡中实例化新会话。也许我说的不对。当他们打开第二个窗口并将其更改为不同的小部件号,然后返回到原始窗口时,在下一次返回时,它将使用第二个窗口的小部件号,而不是它自己的小部件号。也许我说错了。当他们打开第二个窗口并将其更改为不同的小部件号,然后返回到原始窗口时,在下一次返回时,它将使用第二个窗口的小部件号,而不是它自己的小部件号。谢谢!我想做的是,当应用程序启动时,它会检查是否有异常