2016-07-05 69 views
0

我的公司想郵寄明信片,要求收件人訪問一個網站以獲取附加信息。明信片上的網址將包含一個唯一的子域名,用於跟蹤目的。ASP.NET:跟蹤動態子域名

因此,例如,約翰史密斯的網址看起來像johnsmith.mysite.com。艾米約翰遜的明信片網址將amyjohnson.mysite.com等

所以,2個問題。一,網址可以用這種方式設置?我們會發送數千個獨特的明信片,因此在我們的虛擬主機的管理部分手動設置子域名是不現實的。還有兩個,如何在asp.net中,我可以捕獲子域?

謝謝

+0

豈不是一個更容易只是做'mysite.com/johnsmith',而不是'johnsmith.mysite.com'?爲什麼它需要成爲一個子域? – mason

+0

這隻會讓我公司內的某個人認爲個性化的子域名看起來更清晰並且會帶來更多的轉換。所以我需要研究這種方法是否可行。如果沒有,我們會訴諸你提到的方法。 – goalie35

回答

0

我採取了一種替代方法來解決我的問題。我沒有試圖完全以編程方式處理這個問題,而是使用我的網站主機(GoDaddy)在我的域名上創建了一個「通配符DNS」。有一些信息是at this link.

一旦我的域名被設置爲允許通配符子域,我能進入我的代碼,並使用下面的,這讓我提取子域的名稱:

Uri url = new Uri(System.Web.HttpContext.Current.Request.Url.AbsoluteUri); 
string subDomain = GetSubDomain(url); 

而且......

public string GetSubDomain(Uri url) 
    { 
     if (url.HostNameType == UriHostNameType.Dns) 
     { 
      var host = url.Host; 
      if (host.Split('.').Length > 2) 
      { 
       var lastIndex = host.LastIndexOf("."); 
       var index = host.LastIndexOf(".", lastIndex - 1); 
       return host.Substring(0, index); 
      } 
     } 
     return null; 
    }