嗨开发者/建筑师,
这更像是一个建筑问题:
我有一个网络应用程序。该应用程序使用ASP Membership API(来自身份验证)进行用户/角色管理。
我们为每位客户提供单独的申请。所以基本上每个客户端在ASP Membership数据库中都有一个Application Name。然后该客户根据他的需要创建他的角色/用户。
我们在IIS上为每个客户端分别在客户端名称的虚拟目录下托管相同网站的原因是因为所有客户端都有其单独的应用程序名称(就ASP成员资格而言),并且底层数据库是单独的每个客户也是如此。
所以每个客户都有一个单独的URL,例如:http://mysite/client1。然后client1有自己的用户,角色。应用程序使用的底层应用程序数据库是客户个人。
Web应用程序和数据库架构对所有客户端完全相同。
我无法对数据库部分做出任何决定。所以我不打算讨论这个问题。
但我想改变为每个客户托管单独申请的方法。我想为所有客户托管一个应用程序:
这带来了一些问题:
Q1。我将如何创建这些网址:http://mysite/client1,http://mysite/client2(因为我不能在主登录页面上放置所有客户的名称,然后一旦用户选择客户名称,提供用户名/密码......由于业务的性质,我无法做到这一点)*
Q2。我无法创建单个应用程序(在IIS和ASP成员级别上),然后按角色分隔客户端,因为所有客户端都有自己的角色,而且,2个或更多客户端可以拥有相同名称的用户;所以clientX用于client1,userX用于client2。这些用户是不同的,但它们碰巧有相同的名称。
* Q1的一个解决方案可以是:我创建一个新的转发器应用程序,该应用程序在IIS的客户端虚拟目录下单独为每个客户端托管。当客户打开他们的网址(例如:http://mysiteforworder/client1)时,他们被重定向到(http://mysite/Default.apsx?app = hjuk98jkio8)其中(hjuk98jkio8)是客户端的加密名称,我们在内部使用
这将解决Q1,但不会解决Q2。
让我知道我有哪些选择...
答案 0 :(得分:1)
这是我以前用过几次的想法。
您可以在IIS中设置多个Web应用程序/虚拟目录,例如/ client1和/ client2,指向磁盘上的相同物理Web应用程序路径。这样,所有客户的代码仍然相同,所有客户都集中管理,但不同的客户有不同的URL。
使用WMI,您甚至可以在IIS中编写脚本或自动创建/维护webapps / vdirs。
要确定要连接的数据库或正在运行的应用程序,您可以查看正在访问的URL,并将路径的第一部分用作该客户的配置字典中的键。