C# 如何以编程方式为IIS7创建子域?

C# 如何以编程方式为IIS7创建子域?,c#,asp.net,iis-7,subdomain,saas,C#,Asp.net,Iis 7,Subdomain,Saas,我正在用C#/ASP.NET编写一个SaaS应用程序,由IIS7托管。我想为每个注册的客户创建一个个性化的子域,即fred.mydomain.com、bob.mydomain.com,每个都指向同一个应用程序,只是每个客户的皮肤不同 如何以编程方式创建这些子域?使用IIS7将所有请求(如user.mydomain.com(其中用户不是www、mail或其他现有真实子域)映射到mydomain.com/myapp?id=user),然后在脚本中处理您需要的主题 您不需要为创建的每个用户添加规则。只

我正在用C#/ASP.NET编写一个SaaS应用程序,由IIS7托管。我想为每个注册的客户创建一个个性化的子域,即fred.mydomain.com、bob.mydomain.com,每个都指向同一个应用程序,只是每个客户的皮肤不同

如何以编程方式创建这些子域?

使用IIS7将所有请求(如
user.mydomain.com
(其中用户不是www、mail或其他现有真实子域)映射到
mydomain.com/myapp?id=user
),然后在脚本中处理您需要的主题

您不需要为创建的每个用户添加规则。只需创建一条一般规则即可


此外,在您的服务器DNS中,您需要将*.mydomain.com(其中,*不是www、mail或其他现有实际子域)转发到mydomain.com IP。这很直截了当。您已经有现有子域的DNS记录。只需添加*.mydomain.com并指向mydomain.com。这将完成DNS部分的技巧。另一部分是在

中,意识到有人已经通过告诉您执行重定向来回答您的问题,似乎更简单的方法可能是获取主机服务器变量

  • 设置IIS,以便所有传入请求(无论主机是什么) 标题)指向此应用程序。所有站点都必须在IIS中具有唯一的主机名或唯一的端口,因此您可以通过以下方式进行设置:

  • 将站点绑定到默认端口80

  • 在主机名字段中不提供任何内容。这也是首次安装IIS时默认网站的默认设置方式

  • 计算出服务器的静态IP地址,并告诉每个注册的新客户端将其域的DNS指向该IP。或者,如果您将拥有域名,请设置catchall DNS条目:*.mydomain.com-指向您服务器的IP地址

  • 在应用程序中,检查当前 主机标头,以便提供 不同的皮肤或母版页

  • 这应该从代码中获取主机头:

      Request.ServerVariables["HTTP_HOST"]
    

    从那里,您可以根据一组数据库值测试它的值,您必须根据该URL确定需要加载哪个母版页/css样式表/etc。请记住,如果你这样做了一个catchall,你需要解释一个错误键入的URL,因此你没有皮肤来匹配它。

    Sarwar,我有一个后续问题,我希望你能够帮助解决: