2009-09-06 21 views
5

Para un software Asp.Net como una aplicación de servicio, quiero hacer subdominios basados ​​en cuenta como Basecamp y el resto de los productos 37Signals. P.ej. acme.myapp.com cargará la cuenta para ese cliente y retirará solo su información.¿Cómo hacer cuentas estilo Basecamp en Asp.Net Mvc?

Esto es fácil de hacer en Ruby on Rails, pero ¿cómo manejarías esta funcionalidad en ASP.NET MVC y podrás escalar a posiblemente cientos de cuentas?

Respuesta

1

Utilizamos:

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(); 
     } 
1

No es muy diferente en comparación con RoR. Simplemente obtenga HTTP-Request, tome Host-Value, divídalo (en cada punto) y tome la primera parte para obtener el subdominio.

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

Luego, simplemente resuelva el subdominio en la cuenta Empresas.

2

Maarten Balliauw's blog cubierto un método que se extiende RouteBase. Creo que también he visto un controlador de ruta personalizado utilizado para esto.

Además, este StackOverflow question cubrió la misma pregunta, con un enfoque más simplista.

Definitivamente recomiendo factorizar este código en el lado del enrutamiento en lugar de incrustar la lógica para obtener información de dominio en sus controladores.

Cuestiones relacionadas