使用C#Visual Studio 2008和SQL Server 2005。
一个数据库服务器。
一个网络服务器
三个客户
网页名称为alpha
。网站名称为mysite
。
我希望一次只有一个客户端可以查看页面alpha
。如果正在查看该页面而另一台计算机正在查看同一页面,则访问将被拒绝。
有没有办法配置IIS以限制连接到特定页面的计算机?
是否可以通过使用静态类来实现这一点,以便只生成此类的一个实例,而另一个实例尝试生成错误?
如何实现这一目标?
请注意,页面很多。我只想限制人们对此页面的看法。
答案 0 :(得分:4)
由于您无法区分刷新页面与打开另一个选项卡的同一浏览器,我认为没有办法让这样的方案有效。
你为什么需要这个?也许还有其他更好的选择?
答案 1 :(得分:3)
您描述的方式没有内置限制,我不确定静态类应该提供什么帮助。
我会使用application variable,存储第一个客户端的IP地址和某种超时,并以这种方式在您要保护的页面上设置/检查。
答案 2 :(得分:2)
简短的回答是:我认为你不能这样做。
答案不是那么简短:您可以通过选中Request.UserHostAddress
来检查请求来自哪个计算机/ IP地址,暂时将该IP地址存储在“某处”,并防止再次将该页面显示到同一IP地址。但是这种方法存在一些问题:
答案 3 :(得分:1)
我认为理论上这是可能的。
您可以使用身份验证+ Cookie + javascript进行此操作。
使用身份验证可以让用户登录并维护每个用户所服务的页面状态。在该浏览器中设置cookie,以便不必再次登录。
现在你可以在javascript中使用onUnLoad事件(或任何或AJAX作为超时时保持活动+擦除DOM等)来清除(或维护)该用户的特定页面的状态。
每当用户请求页面时,请检查他是否已登录并打开该页面。如果状态显示他已打开,则可以拒绝并发视图。如果他使用不同的浏览器,您可以要求再次登录,因为缺少cookie等。
当然,其他限制可能会阻止您使用它。
免责声明:我自己没有尝试过,可能有办法解决这个问题。
答案 4 :(得分:0)
执行此操作的低效方法可能是将每个用户的ip和当前页面放入数据库,然后针对该ip的所有后续请求进行查询。将onUnload事件添加到每个从数据库中删除已卸载页面的页面。