为IIS或Single上的每个客户端分离ASP应用程序

本文关键字:客户端 分离 ASP 应用程序 IIS Single | 更新日期: 2023-09-27 18:00:04

嗨,开发人员/建筑师,

这更像是一个架构问题:

我有一个网络应用程序。应用程序使用ASP成员身份API(来自身份验证)进行用户/角色管理。

我们为每个客户托管一个单独的应用程序。所以基本上每个客户端在ASP成员数据库中都有一个应用程序名称。然后,该客户根据自己的需要创建自己的角色/用户。

我们之所以有相同的网站,在IIS上为每个客户端分别托管在客户端名称的虚拟目录下,是因为所有客户端都有各自的应用程序名称(根据ASP成员资格),并且底层数据库也为每个客户端单独。

因此每个客户端都有一个单独的URL,例如:http://mysite/client1.然后客户端1拥有他自己的用户、角色。应用程序使用的底层应用程序数据库是单独的客户端。

对于所有客户端,Web应用程序和数据库模式完全相同。

关于数据库部分,我无法做出任何决定。所以我不打算讨论这个问题。

但我想改变为每个客户端托管单独应用程序的方法。我想为所有客户端托管一个应用程序:

这带来了一些问题:

Q1.我将如何创建这些URL:http://mysite/client1,http://mysite/client2(因为我不能将所有客户的名称放在主登录页面上,然后一旦用户选择了客户名称,就提供用户名/密码……由于业务的性质,我不能这样做)*

Q2.我不能创建单个应用程序(在IIS和ASP成员级别上),然后按角色分隔客户端,因为所有客户端内部都有角色,另外,两个或多个客户端可以有一个同名用户;所以userX用于客户端1,userX用于客户2。这些用户是不同的,但他们碰巧有相同的名字。

*Q1的一个解决方案可以是:我创建一个新的转发器应用程序,该应用程序分别托管在IIS中客户端的虚拟目录下。当客户端打开他们的url(例如:http://mysiteforworder/client1)它们被重定向到(http://mysite/Default.apsx?app=hjuk98jkio8)其中(hjuk98jkio8)是我们在内部使用的客户端的加密名称。

这将解决Q1,但不能解决Q2。

让我知道我有什么选择。。。

为IIS或Single上的每个客户端分离ASP应用程序

这里有一个我以前用过几次的想法。

您可以在IIS中设置多个Web应用程序/虚拟目录,例如/client1和/client2,它们指向磁盘上相同的物理Web应用程序路径。这样,所有客户的代码仍然相同,都是集中管理的,但不同客户的URL不同。

使用WMI,您甚至可以为IIS中的webapps/vdirs编写脚本或自动创建/维护。

要确定要连接到哪个数据库,或者哪个应用程序正在运行,您可以查看正在访问的URL,并使用路径的第一部分作为该客户配置字典的关键字。