0

有人问我是否可以选择“单实例”我们的门户网站。有关WinForms 应用程序中的相同想法,请参阅 Hanselman 博客上的这篇文章。

假设我们在同一台客户端机器上有 2 个快捷方式:

http://MyServer/MyWebPortal/Default.aspx?user=username&document=Foo http://MyServer/MyWebPortal/Default.aspx?user=username&document=Bar

单击第一个快捷方式将启动我们的门户网站,登录并显示文档“Foo”。单击第二个快捷方式应在 Web 门户的运行实例中显示文档“Bar”。

我目前的方法是:在页面加载中,首先为每个客户端创建一个应用程序变量。第二个实例查找 Application 变量以查看门户是否在客户端上运行。如果是,则将第二个 URL 记录在另一个 Application 变量中,并强制退出第二个实例。我尝试创建一个 ASP.Net AJAX 计时器来轮询应用程序变量以显示要显示的文档。这类作品。为了快速响应第二个请求,我将 Timer 间隔设置为 2 秒。由于频繁的回发,这使得门户网站使用起来很烦人。

使用我的方法,有没有办法让第二个实例通知第一个实例检查应用程序变量而不进行轮询?有没有更好的整体方法来解决这个问题?

提前致谢

4

1 回答 1

2

服务器端无法控制您的页面在客户端打开哪个浏览器实例。您不能强制所有请求在同一个浏览器窗口中打开。

此外,应用程序范围变量由应用程序的所有用户共享。至少让它成为一个会话范围的变量——否则你一次只允许一个用户访问你的门户!

老实说,这听起来像是来自某人的愚蠢要求比您的门户的一个实例打开。

于 2008-10-22T14:08:23.227 回答