2011-12-07 33 views
2

我正在使用由GoDaddy託管的MVC 3站點,我需要在URL中存儲動態變量。喜歡的東西:MVC 3託管站點的動態路由

http://www.example.com/{Cat}/{List}/{Item}/{Action}
http://{Cat}.example.com/{List}/{Item}/{Action}

後者將是最好的。

該網站允許用戶創建自定義列表,列表類別和列表項目。列表類別可以是類似於SportsNews,列表可以是NBA TeamsPolitics,並且列表項目將是LakersPres. Obama。用戶能夠生成3箇中的任何一個(只有沒有重複)。

我的目標是使URL是這樣http://sports.example.com/nba/lakers並讓用戶路由到Controller = "Items", Action = "Details",使用參數Cat = "sports", List = "nba", Item = "lakers"如果用戶指定Action(如編輯,刪除等),它取代Details

我對IIS(通過GoDaddy更具體地說IIS)並不是很熟悉,所以如果子域名可以工作(但這是最終目標),那麼IDK​​,如果可能的話,我想知道我會需要做(即自我主持+步驟)。

由於

回答

2

這部分是一個域http://sports.example.com/平移到物理地址例如203.10.01.1您必須使用GoDaddy註冊一個子域名。 ASP.NET MVC將處理... nba/lakers部分。因此,您的域名將爲http://sportworldwide.com/,子域名爲http://nba.sportworldwide.com/lakers。如果只想使用MVC 3。嘗試類似

sportworldwide.com/sport/nba/lakers。

routes.MapRoute("DefaultSport", "sport/{action}/{id}", 
        new { controller = "Sport", action = "", id= "" }); 

編輯:

我不能發表評論通配符DNS記錄性能或過多等我看到的是你需要編寫自定義路由處理的唯一問題,那麼你就需要獲取Url的子域名部分運動並更改動作或ID值以處理您的子域名。 這裏例如通過routehandler修改路線: asp.net MvcHandler.ProcessRequest is never called

+2

謝謝你的幫助:)如果我自己主辦的網站(因此具有了IIS總量控制),將允許我成爲了子域更靈活?或者是在IIS之外處理子域(在其中一個DNS服務器還是其他地方)?我見過有動態子域名的網站,所以它一定是可能的,我只是不知道它們是如何做到的! –

+2

好吧,你需要看看ISAPI過濾器。這裏有一篇關於優點和缺點的文章 - 從哪裏獲得ISAPI重寫過濾器。 針對IIS的http://www.seoconsultants.com/windows/isapi/subdomains/ 請查看http://learn.iis.net/page.aspx/460/using-the-url-rewrite-module/ – Nickz

+2

通配符DNS記錄怎麼樣?如果我只是添加了通配符DNS A Record並將其轉發到我的站點的IP,是否允許我根據子域進行篩選? –