如何在ASP.NET中创建子域? 我的主页上有几个链接(Home.aspx) 示例:Link1和Link2
我需要创建两个子域link1.example.com和link2.example.com 并重定向到他们。我将使用Response.Redirect进行导航。
问题: 文件是否需要驻留在不同的目录中? 我可以在localhost上测试或模拟这个例子吗?
对这位新手ASP.NET程序员的任何帮助都将不胜感激。
答案 0 :(得分:4)
根据您使用这些重定向实际尝试完成的内容,这可能很有用。如果您只是尝试从单个Web应用程序处理多个子域,则可以完全使用基于IIS的服务器伪造ASP.NET外部的这种子域行为,该服务器使用ISAPI重写工具托管单个Web应用程序,例如Ionics Isapi重写过滤器(http://www.codeplex.com/IIRF),假设您能够在托管环境中添加ISAPI过滤器。
由于在ASP.NET甚至知道请求之前处理了ISAPI过滤器,因此您可以从一个Web应用程序托管多个子域(和完整域)。不幸的是,在ASP.NET内置Web服务器(Cassini)中模拟这种类型的重定向是不可能的,因为它不使用ISAPI。此方法允许您测试最终子域的功能,但仅限于最终的重定向位置;你无法真正测试Cassini中的原始域映射,因为Windows hosts文件不允许带端口的规则。
如果您将单个应用程序设置为具有处理所有所需子域功能的页面,则只需将子域请求重定向到所需位置的单个应用程序即可。这可以像单个应用程序中的页面文件夹一样简单,该文件夹处理新子域的所有逻辑。以下是Ionics的一些示例重写规则,它们将各个子域的请求发送到您的单个Web项目中的最终位置:
RewriteCond %{HTTP_Host} ^(?~new-sub-domain.yourdomain.com).*$ [I]
RewriteRule ^(.*)$ http://www.yourdomain.com/new-sub-domain$1 [I,R=302]
RewriteCond %{HTTP_Host} ^(?~another-new-sub-domain.yourdomain.com).*$ [I]
RewriteRule ^(.*)$ http://www.yourdomain.com/another-new-sub-domain$1 [I,R=302]
# '#' is a comment marker in the rewrite files
# [I] at the end means case-insensitive
# [L] at the end means last rule (sending the request on but hiding the forward from the end user)
# [R] at the end means an official redirect and can be used instead of [L] (the end user will then see a new request, such as a 301 redirect using [R=301])
这将导致对新子域的所有请求转到现有项目中的目录(分别为/ new-sub-domain /和/ another-new-sub-domain /);这可以修改为在项目中的任何地方发送它们。
虽然这种方法允许您从单个应用程序托管多个子域(可能还有几个完整域),但对ASP.NET Web服务器(Cassini)中重定向/重写的限制将使您无法测试功能这些最终位置(例如,“/ new-sub-domain /").
答案 1 :(得分:0)
您需要从域名提供商(从您购买域名的地方)设置域名和子域名,而不是从您的ASP.NET网站设置。
在本地,您无法对此进行测试,因为您只能访问http://localhost作为开发Web服务器。