How to do Basecamp-style accounts in Asp.Net Mvc?

前端 未结 3 1488
傲寒
傲寒 2021-02-06 13:30

For an Asp.Net software as a service application, I want to do account based subdomains like Basecamp and the rest of the 37Signals products have. E.g. acme.myapp.com will load

相关标签:
3条回答
  • 2021-02-06 13:40

    Maarten Balliauw's blog covered one method extending RouteBase. I think I've also seen a custom route handler used for this.

    Also, this StackOverflow question covered the same question, using a more simplistic approach.

    I definitely recommend factoring this code out into the routing side rather than embedding the logic to get domain information in your controllers.

    0 讨论(0)
  • 2021-02-06 13:50

    We use:

    public static string GetSubDomain()
            {
                string subDomain = String.Empty;
    
                if (HttpContext.Current.Request.Url.HostNameType == UriHostNameType.Dns)
                {
                    subDomain = Regex.Replace(HttpContext.Current.Request.Url.Host, "((.*)(\\..*){2})|(.*)", "$2");
                }
    
                if (subDomain.Length == 0)
                {
                    subDomain = "www";
                }
    
                return subDomain.Trim().ToLower();
            }
    
    0 讨论(0)
  • 2021-02-06 14:00

    It's not very different compared to RoR. Just get the HTTP-Request, take the Host-Value, split it (at each dot) and take the first part to get the subdomain.

    string subdomain = requestContext.HttpContext.
                          Request.Headers["Host"].Split('.')[0];
    

    Then just resolve the subdomain to the Companies account.

    0 讨论(0)
提交回复
热议问题