Asp.Net MVC应用程序中的子域

时间:2010-11-11 17:58:30

标签: asp.net-mvc subdomain user-accounts infrastructure

Helo Guys!

我将开始开发营销网站,用户将能够在此网站上创建帐户。我想使用子域名分区用户区域,就像wordpress.com,ning.com等。如果用户创建一个帐户,例如:“john”,网站应该在john.mydomain.com中为此回复用户区,但它将是相同的代码(分隔我的子域)。

我想知道,如何识别帐户(在子域中)以显示网站的正确帐户?

PS:当然不会通过身份验证来显示网站。

由于

2 个答案:

答案 0 :(得分:2)

我的好友,我得到了这个网站之一。我们有一个数据库表,其中包含SiteId和Domain。

在基本控制器中,我们在域进入时解析了域,然后在数据库中找到了相应的SiteId。所有控制器都继承自此基本控制器,并且SiteId已传递给每个对我们模型的调用。

Admin.Site.com -> SiteId = 1
Frank.Site.com -> SiteId = 2

当有人点击Admin.Site.com时,SiteId为1会传递给模型以检索数据,或保存/编辑/添加/删除它。

以下是我们用于获取域名的代码:

public Website CurrentWebsite
{
    get
    {
        if (_website == null)
        {
            var domain = HttpContext.Request.Url.Host;
            _website = _websiteRepository.GetWebsiteByDomain(domain);
        }
        return _website;
    }
}

答案 1 :(得分:2)

asp.net mvc中的路由处理在域名之后开始,因此无法使用常规路由处理捕获。

您可以创建一个路由处理程序,在路径评估之前将子域添加到路径数据中(从Request.Url获取)。