【问题标题】:Seperate ASP Application for each client on IIS or Single?为 IIS 或单个客户端上的每个客户端单独的 ASP 应用程序?
【发布时间】:2011-06-22 09:01:47
【问题描述】:

各位开发者/架构师,

这更像是一个建筑问题:

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

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

我们在 IIS 上为每个客户端分别托管在客户端名称的虚拟目录下的原因是因为所有客户端都有其单独的应用程序名称(就 ASP 成员资格而言),并且底层数据库是独立的每个客户也是如此。

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

Web 应用程序和数据库架构对于所有客户端都是完全相同的。

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

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

这带来了一些问题:

第一季度。我将如何创建这些网址:http://mysite/client1http://mysite/client2(因为我不能将所有客户端的名称放在主登录页面上,然后一旦用户选择客户端名称,提供用户名/密码....我不能这样做是由于业务的性质)*

第二季度。我不能创建单个应用程序(在 IIS 和 ASP 成员级别上)然后按角色分隔客户端,因为所有客户端都有自己的角色,另外,2 个或更多客户端可以有一个同名的用户;所以client1的userX和client2的userX。这些用户是不同的,但他们恰好有相同的名字。

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

这将解决第一季度,但不是第二季度。

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

【问题讨论】:

  • 或者在这种情况下可能是最好的方法,是单独托管应用程序(因为它正在发生......因为在这种情况下客户端实际上是单独的应用程序,即使所有应用程序看起来/行为同样...你们建议...)

标签: c# .net asp.net iis


【解决方案1】:

这是我以前使用过几次的一个想法。

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

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

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

【讨论】:

  • 我想我喜欢你的想法...我可以对 WCF 应用程序使用相同的方法吗...(我没有提到上面的任何事情...只要考虑我有相同的 senario,因为少数客户端,它们只是 WCF 应用程序客户端...)我认为您的解决方案适用于 Web 应用程序,如果请求也通过 WCF 进入,我可以确定 url 是什么...???如果可以的话,我认为可以采用这种方法...你说什么...???
猜你喜欢
  • 2014-08-23
  • 1970-01-01
  • 2010-12-25
  • 1970-01-01
  • 1970-01-01
  • 2015-08-08
  • 2022-06-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多