2011-09-16 13 views
1

私はAsp.net MVC3とC#とIIS 7.5を使用しています。ユーザーが登録されると、彼はusername.host.comを使用して自分のサイトをブラウズすることができます。このユーザー名はクエリ文字列で利用できるようにして、特定のユーザー名に関連するデータのみを表示できます。すべてのロジックはすべてのユーザーで同じです。私はuser1.host.comが入力された場合、私は別のコントローラとアクションなどにリダイレクトしたいと思っています。すべてのアプリケーションロジックはすべてのユーザーにとって同じです。私はちょうどブラウザにURLが表示される方法を変更したい。ユーザー登録時にusername.host.comへの参照を許可

注:私は実際に動的サブドメインを作成することについては言及していません。それは多くの課題です!

ルーティングはMVCで非常に強力なので、ルーティングを使用してルーティングを単独で行うことができます。また、可能であれば、私はIIS/Cassiniでもlocalhost上で動作させたいと思っています。

例:jaggu.localhost:19883を参照してください。それは私をlocalhost:19883/Home/index/Jagguに送るべきです(デフォルトでHomeはコントローラであり、インデックスはメソッドです)

私はこれを達成する方法について完全に無知です。どんな助けもありがとう。

ありがとうございました。

+0

[ユーザーがusername.host.comを参照するために登録されている場合、ユーザーに許可](http://stackoverflow.com/questions/7442646/allow-user-when-registered-to-browse-to-username-host) -com) – bzlm

答えて

3

ASP.NET MVCルーティングに関しては、簡単です。単にカスタムルート書く:

public class MyRoute : Route 
{ 
    public MyRoute(string url, object defaults) 
     : base(url, new RouteValueDictionary(defaults), new MvcRouteHandler()) 
    { } 

    public override RouteData GetRouteData(HttpContextBase httpContext) 
    { 
     var rd = base.GetRouteData(httpContext); 
     var tokens = httpContext.Request.Url.Host.Split('.'); 
     if (tokens.Length > 1) 
     { 
      rd.Values["username"] = tokens[0]; 
     } 
     return rd; 
    } 
} 

をして、このルートを登録します。誰かがhttp://foo.host.comを要求したとき

routes.Add(
    "Default", 
    new MyRoute(
     "{controller}/{action}/{username}", 
     new { controller = "Home", action = "Index", username = UrlParameter.Optional } 
    ) 
); 

は今、HomeControllerの自動Indexアクションが呼び出され、username="foo"パラメータを渡されます。

次に難しい部分があります。サブドメインの登録と管理、およびWebサーバーの設定。話題にもっと適した話題http://serverfault.com

+0

サブドメインを登録しないとできませんか?エイリアシングや何かにすぎないかもしれません。内部的には、すべて同じサイトを指している必要があります。わからない。サブドメインの作成が絶対に必要かどうかを知りたいだけですか? – Jaggu

+0

私はこの分野の専門家ではありませんが、DNSサーバーがこのサブドメインと何らかの設定なしでルーティングするIPアドレスをどのように知るかはわかりません。 –

+0

ありがとうダーリン。あなたは私に少しはっきりしました。私はserverfaultにも投稿しました。いくつかのIISまたはネットワークの人が応答することができるかもしれません。 – Jaggu

0

www。{site} .com/{username}を使って作業しようとするよりもはるかに簡単です。

サブドメインは、別々のウェブサイトから切り離すことを意味します。コンテンツエリアではありません。

SSL証明書(必要な場合)や、常に楽しい「同じ発信元ポリシー」を扱うなど、より多くの問題を発見できます。

関連する問題