【问题标题】:Multi tenancy in ASP MVCASP MVC 中的多租户
【发布时间】:2011-01-04 08:08:31
【问题描述】:

恐怕又是一个多租户帖子。 我只是找不到解决问题的好方法,我已经阅读了所有关于 ASP MVC 多租户的精彩文章,但我仍然需要一些好的建议。

我要为我的一位客户创建一个企业形象。他们的公司结构就像一个主要公司(例如 Acme Group Ltd.),它拥有其他几家公司(例如 Acme Holding Ltd、Acme Technology Ltd.、Acme Maritime Ltd. 等)。

我想使用一个 ASP MVC 项目作为所有站点的容器,以减少所需的代码并使其保持干燥。我还希望所有网站都使用相同的会员数据库。

我的第一个想法是为每个子公司创建一个控制器文件夹,为公司主页创建一个根控制器。然后它看起来像:

acme.com(“公司主页”)
acme.com/Holding(“Acme 控股有限公司”)
acme.com/Maritme(“Acme Maritme Ltd.”)
...

这种结构对我来说很好,但我也希望网站的用户根据自己的独立域访问每个子站点,例如:

holding.acme.com(这应该指向“acme.com/Holding”)。
...

这当然也可以,但问题是当用户被定向到“acme.com/Holding”时,我不希望 URL 发生变化。我希望它仍然是“holding.acme.com”、“holding.acme.com/About”、“holding.acme.com/Contact”等,而不是“acme.com/Holding/Contact”等.

在这个特定项目中使用的最佳实践是什么,有什么想法吗?

【问题讨论】:

  • 您可以访问 MVC2 吗?您是否查看过其中的“区域”功能?
  • 实际上,我使用的是 MVC2,但我没有查看区域。我现在去看看。

标签: c# asp.net asp.net-mvc multi-tenant


【解决方案1】:

保持简单,使用 IIS URL Rewrite Module。您可以将其设置为将acme-holding.com/* URL 重写为acme.com/Holding/*

<rewrite>
    <rules>
        <rule name="Forward to acme.com">
            <match url=".*" />
            <action type="Rewrite" url="http://acme.com/Holding/{R:0}" />
        </rule>
    </rules>
</rewrite>

【讨论】:

  • 我想我会结合 DaRKoN_s 关于 MVC2 中“区域”的提示。我只是想知道这是否是最佳做法还是我应该以不同的方式处理它?
  • 我相信最好的做法是重定向而不是重写。 Google 不喜欢具有不同 URL 的相同内容。
【解决方案2】:

我写了一篇关于多租户的博客,其中涵盖了您在此处尝试的内容。:

http://jasonjano.wordpress.com/2010/02/22/multi-presentation-websites-for-c/

祝你好运!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-12
    相关资源
    最近更新 更多