2009-09-06 4 views
5

サービスアプリケーションとしてのAsp.Netソフトウェアの場合、私はBasecampのようなアカウントベースのサブドメインと37Signals製品の残りの部分を持っています。例えば。 acme.myapp.comはその顧客のアカウントを読み込み、その情報のみを取り戻します。Asp.Net MvcでBasecamp形式のアカウントを行うには?

これはRuby on Railsでは簡単ですが、ASP.NET MVCでこの機能をどのように処理し、何百ものアカウントに拡張できるようになるでしょうか?

答えて

1

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

これはRoRに比べてあまり変わりません。 HTTPリクエストを取得し、Host-Valueを取得し、それを(各ドットで)分割し、最初の部分を取得してサブドメインを取得します。

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

次に、サブドメインをCompaniesアカウントに解決します。

我々が使用
2

Maarten Balliauw's blogはRouteBaseを延びる1つの方法をカバーしました。私はこれに使用されるカスタムルートハンドラも見たと思います。

また、このStackOverflow questionは、より単純なアプローチを使用して、同じ質問を扱っています。

コントローラにドメイン情報を取得するロジックを組み込むのではなく、ルーティング側にこのコードを組み込むことをおすすめします。

関連する問題