2009-12-21 178 views
4

我正在寻找一种解决方案,以编程方式在ASP.NET,ASP.NET MVC和PHP中创建子域名。具体而言,用户配置文件页面应解析为:www.domain.com/profilenamehttp://profilename.domain.com以编程方式创建子域名

+1

这个问题真的无法回答。一次处理它的一部分会更好。 DNS设置,.NET代码,PHP代码,等... – 2009-12-22 01:05:15

+0

是的,你是对的,我实际上不是寻找一个解决方案,但不知道它是如何正在做...... 虽然我期待为HttpModuleHandlers写了一些代码和也在asp.net 4新的路由属性.. 但我认为更有趣的答案将张贴在这里:) – Kubi 2009-12-22 08:28:12

回答

20

更新您的特定域的DNS设置,使* .domain.com全部指向相同的主机。

然后,程序检查,看看使用的URL的第一部分包含你正在寻找的子域,并采取相应的行动。例如,如果第一部分包含给定的配置文件名,则从数据库中检索特定的配置文件数据集并将其显示给用户。

确保您的网络应用程序使用相对链接,这样,如果用户使用的子域,你不要在其他地方重定向他们到达现场。

+1

+1 catch-all域是要走的路。 – 2010-04-30 14:53:25

+0

谢谢!正是我所期待的。 – Hnatt 2012-07-25 19:41:50

1

没有通用的方法来创建子域。您需要调用由ISP或DNS提供商提供的API(通常为SOAP或REST)。

要么,要么使用通配符域(*)。

在IIS方面,请务必配置您的应用程序,使其不使用主机头。

+5

每个类似这样的网站都使用通配符域。实际上,创建单个DNS条目意味着很长的DNS传播延迟,疯狂膨胀的区域文件等。 – 2009-12-21 23:53:25

+1

这取决于您需要多少个子域(OP未指定)。通配符并不总是最好的方式,特别是如果你关心可伸缩性的话。以下是一个指向创建新子域的示例API的链接,由受管理的DNS服务提供:https://durabledns.com/help/downloads/DurableDNS%20SOAP%20API%20Documentation%20v3.0.pdf – RickNZ 2009-12-22 04:20:13

1

你可以尝试:

AppDomain subDomain = AppDomain.CreateDomain("ProfileUserDomain"); 

虽然你可能需要配置你的DNS,让您的代码的请求。动态DNS服务可能是您的答案。

+0

感谢您的回答。你有关于在IIS上配置动态DNS服务的任何信息吗? – Kubi 2012-07-18 06:40:46

+0

我不知道如何添加动态DNS软件到您的网络服务器或Windows服务器,但希望使用专用服务器的帐户将帮助你:http://howto.wired.com/wiki/Set_Up_Dynamic_DNS – tristo 2012-07-20 22:32:57