如何限制网站的某个部分,以便一次只能由一台计算机查看?

使用C#Visual Studio 2008和SQL Server 2005。

  • 一个数据库服务器

  • 一个网络服务器

  • 三个客户

  • 网页名称是alpha 。 网站名称是mysite

我希望一次只有一个客户端可以查看页面alpha 。 如果正在查看该页面而另一台计算机正在尝试查看同一页面,则拒绝访问。

有没有办法配置IIS,以限制连接到特定页面的计算机?

是否可以通过使用静态类来实现这一点,以便只生成此类的一个实例,而另一个实例生成ERROR?

怎么做到这一点?

请注意,有很多页面。 我只想限制人们对此页面的看法。

您描述的方式没有内置限制,我不确定静态类应该提供什么帮助。

我会使用一个应用程序变量 ,存储第一个客户端的IP地址和某种超时,并以这种方式在您要保护的页面上设置/检查它。

由于您无法区分刷新页面与打开另一个选项卡的同一浏览器,我认为没有办法使这样的方案有效。

你为什么需要这个? 也许还有其他更好的选择?

简短的回答是:我认为你不能这样做。

答案不是那么简短:您可以通过检查Request.UserHostAddress来检查请求来自哪个计算机/ IP地址,暂时将该IP地址存储在“某处”并阻止再次将该页面显示到同一IP地址。 但是这种方法存在一些问题:

  • 您将不得不清除“活动”客户端IP地址列表
  • 如果他们位于防火墙/代理/等之后,您将无法区分不同的用户/计算机(它们将显示与您的Web应用程序相同的IP地址)

我认为理论上它是可能的。

您可以使用身份validation+ cookies + javascript执行此操作。

使用身份validation可以让用户登录并维护每个用户所服务的页面的状态。 在该浏览器中设置cookie以允许不必再次登录。

现在,您可以在javascript中使用onUnLoad事件(或任何或AJAX作为超时时保持活动+擦除DOM等)来清除(或维护)该用户的特定页面的状态。

每当用户请求页面时,检查他是否已登录并打开该页面。 如果状态显示他已打开,则可以拒绝并发视图。 如果他使用其他浏览器,您可以要求再次登录,因为缺少cookie等。

当然,其他约束可能会阻止您使用它。

免责声明:我自己没有尝试过,可能有办法解决这个问题。

执行此操作的低效方法可能是将每个用户的ip和当前页面放入数据库,然后针对该ip的所有后续请求进行查询。 将onUnload事件添加到每个从数据库中删除已卸载页面的页面。