【问题标题】:Multiple domains, same application but different result on each subdomain. how to keep track of which account for the subdomain?多个域,相同的应用程序,但每个子域的结果不同。如何跟踪子域的哪个帐户?
【发布时间】:2011-09-02 10:37:22
【问题描述】:

我有一个用户可以注册的网络应用程序。每个用户都将获得其帐户的子域。每个子域都是独一无二的,但使用与其他所有子域相同的 Web 应用程序。

该应用程序是 .net,我在 iis 2003 或 2008 上运行它(还没有决定。),我的目标是大约 1000 个用户。 (1000 个子域)

例如:

user1.mydomain.com
user2.mydomain.com
user3.mydomain.com   alias sub.something.com

由于域的别名,并非总是可以从子域名中获取帐户 ID。

所以我在考虑不同的方法。 1:对于每个页面请求,都会执行一次数据库查找并返回帐户的 Id。缺点?额外的数据库通信。并且包含所有用户的所有域名的表,每次请求页面时在数据库中进行文本搜索听起来不是一个好主意。

2:作为数字 1,但 accountId 保存为会话。但是 1 thousend 帐户会发生什么,每个帐户有 1000 名观众,使用大量内存?

3:我不知道这是否可能,但我认为它是一个好... 我正在考虑创建所有子域.. 用户 1., 用户 2., 用户 3.... 每个子域的别名都保存在 IIS 中。 在所有域的每个文件夹中,我创建了一个 ID 文件。只包含用户的 ID 为:

id.aspx
-----
accountID = ##;
-----

然后我希望应用程序的所有文件都虚拟包含在每个子域中。

说明: 每个子域包含以下文件:

id.aspx
file1.aspx virtual file from web.mydomain.com
file2.aspx virtual file from web.mydomain.com
File3.aspx virtual file from web.mydomain.com
....

file1...3 位于 IIS 上的其他位置。 这可能吗?

请问,这里有人可以帮助我解决这个问题吗? 我该怎么办? 我想这是一个常见的“问题”,许多人已经很好地解决了。

感谢您抽出宝贵时间阅读本文。

最好的问候 哑光

【问题讨论】:

    标签: asp.net iis subdomain


    【解决方案1】:

    对我来说,从管理的角度来看,#3 可能是一个挑战。我宁愿采用类似于 #2 的方法 - 您的映射存储在数据库中。当用户登录时,会进行查找,并将帐户 ID 缓存在会话状态中。如果您已经将会话状态用于其他用途,那么添加此位信息并不是真正的开销。否则,您可以考虑缓存此信息的其他选项 - 例如,可以将其放入 cookie 中(当然您必须添加加密/校验和等机制以避免篡改)。您还可以将帐户 ID 作为用户身份的一部分(通过将其推送到身份验证 cookie 中,该 cookie 无论如何都会由 ASP.NET 运行时进行防篡改)。

    考虑到您有 1000 个用户,我很可能会选择构建内存查找表(将字典存储在 ASp.NET 缓存或静态变量中),考虑到每个用户有 10 个别名,它不会超过 10000条目 - 在应用程序启动和每个请求启动时构建表,进行查找并获取帐户 ID 并将其存储到 HttpContext 以便以后可用。

    【讨论】:

      猜你喜欢
      • 2019-04-21
      • 1970-01-01
      • 1970-01-01
      • 2012-10-01
      • 2012-01-03
      • 2019-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多