簡體   English   中英

如何以編程方式為IIS7創建子域?

[英]How to create subdomains for IIS7 programmatically?

我正在用IIS7托管的C#/ ASP.NET中編寫一個SaaS應用程序。 我想為每個注冊的客戶創建一個個性化的子域名,即fred.mydomain.com,bob.mydomain.com,每個客戶都指向同一個應用程序,每個客戶只有不同的皮膚。

如何以編程方式創建這些子域?

使用IIS 重寫 user.mydomain.com將所有請求(如user.mydomain.com (用戶不是www,郵件或其他現有的真實子域))映射到mydomain.com/myapp?id=user然后在腳本句柄中處理您需要的任何主題。

您無需為每個創建的用戶添加規則。 只需創建一個通用規則即可。

而且,在您的服務器DNS中,您需要將* .mydomain.com(其中*不是www,郵件或其他現有的真實子域)轉發到mydomain.com IP。 這很簡單。 您已擁有現有子域的DNS記錄。 只需添加* .mydomain.com並指向mydomain.com即可。 這將是DNS技巧的一部分。 其他部分在URL Rewrite中

當然通過告訴你做重定向來實現某人已經回答了你的問題,似乎更簡單的方法就是獲取主機服務器變量。

  1. 設置IIS,以便所有傳入請求(無論主機標頭)指向此應用程序。 所有站點都必須在IIS中具有唯一的主機名或唯一端口,因此您可以通過以下方式設置:

    1. 將站點綁定到默認端口80。

    2. 未在“主機名”字段中提供任何內容。 這也是首次安裝IIS時默認設置默認網站的方式。

  2. 找出服務器的靜態IP地址,並告訴每個注冊的新客戶端將其域的DNS指向該IP。 或者,如果您將擁有域名,請設置一個catchall DNS條目:* .mydomain.com - 指向您的服務器的IP地址。

  3. 在您的應用程序中,檢查當前主機標頭,以便提供不同的皮膚或母版頁。

這應該從代碼中獲取主機頭:

  Request.ServerVariables["HTTP_HOST"]

從那里,您可以根據一組數據庫值測試其值,您必須根據該URL確定需要加載哪個MasterPage / css樣式表/等。 請記住,如果你像這樣做了一個catchall,你需要考慮一個錯誤的URL,因此你沒有皮膚可以匹配它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM