C# 如何允许用户在我的MVC网站上创建自己的子域?

C# 如何允许用户在我的MVC网站上创建自己的子域?,c#,asp.net-mvc-3,iis,subdomain,C#,Asp.net Mvc 3,Iis,Subdomain,可能重复: 我将建立一个网站,允许用户创建自己的虚拟商店,由我的网站托管 想想eBay;让小企业创建他们的商店 例如: www.foo.com - The main website. www.georgestires.foo.com - "George's Tires" online store. 我会让用户在一定程度上创建他们自己的样式表和定制,但这是以后的事了。现在我想知道如何在MVC3网站上实现这个特性 我简直是站在了世贸中心,没有腿可站。任何和所

可能重复:

我将建立一个网站,允许用户创建自己的虚拟商店,由我的网站托管

想想eBay;让小企业创建他们的商店

例如:

www.foo.com                 - The main website.
www.georgestires.foo.com    - "George's Tires" online store.
我会让用户在一定程度上创建他们自己的样式表和定制,但这是以后的事了。现在我想知道如何在MVC3网站上实现这个特性

我简直是站在了世贸中心,没有腿可站。任何和所有的建议都将不胜感激。我知道,在IIS中,我可以创建一个“bar.foo.com”子域绑定,并直接流到我的ASP.Net MVC3应用程序,但这是否意味着每次有人创建他们的存储时,我都必须以编程方式创建一个新绑定


这可能吗?我应该看看这种方法吗?

绑定DNS服务器和Microsoft DNS服务器都允许设置一个与域中任何不存在的条目匹配的
通配符条目

*.example.com.   3600 IN  CNAME host1.example.com.
然后在IIS中设置一个URL重写规则,该规则将转换表单的URL
http://subdomain.yourdomain.com/
进入,比如说,
http://yourdomain.com/?root=subdomain

这将允许您使用数据库管理这些克隆站点


唯一的缺点是,
DNS系统
不允许您设置形式为
www.*.yourdomain.tld

的通配符项。我不知道在Windows世界中是否可以在Apache中执行“url重写”链接

所以人们会看到:www.georgestires.foo.com,但实际上是www.foo.com/georgestires。这样,您就不必为每个帐户创建真正的子域。

您需要指向服务器的记录,只需将IIS配置为接受端口80上的所有请求并发送到您的应用程序即可。然后检查hostheader以查看传入域是什么


现在,对于SSL,您需要做更多的工作。再说一次*.mydomain证书可能对你很有用。

@lazyberezovsky:谢谢你把这个问题联系起来,但这些答案都不适用于我。我的“子域”不是提前知道的,它们需要是动态的,可以说是“可创建的”。如果您要在网站上注册,您必须能够创建
lazybrez.foo.com
,而无需我作为网站所有者进行任何交互。我是否需要为在我的网站上创建店铺的每个潜在客户创建
DNAME
记录?这似乎不可行。@塞格,检查链接/-你只需要一个(比通配符CNAME好-它只给你一个级别)。