1

如何在 ASP.NET 中创建子域?我的主页上的链接很少(Home.aspx)示例:Link1 和 Link2

我需要创建两个子域 link1.example.com 和 link2.example.com 并重定向到它们。我将使用 Response.Redirect 进行导航。

问题:文件是否需要驻留在不同的目录中?我可以在 localhost 上测试或模拟这个例子吗?

对这个新手 ASP.NET 程序员的任何帮助将不胜感激。

4

2 回答 2

4

根据您实际尝试通过这些重定向完成的任务,这可能很有用。如果您只是尝试从单个 Web 应用程序处理多个子域,则可以完全使用基于 IIS 的服务器在 ASP.NET 之外使用 ISAPI 重写工具托管单个 Web 应用程序来伪造此子域行为,例如Ionics Isapi 重写过滤器 ( http://www.codeplex.com/IIRF ),假设您能够将 ISAPI 过滤器添加到您的托管环境。

由于 ISAPI 过滤器在 ASP.NET 知道请求之前就已处理,因此您可以仅从一个 Web 应用程序托管多个子域(和完整域)。不幸的是,在 ASP.NET 内置 Web 服务器 (Cassini) 中模拟这种类型的重定向是不可能的,因为它不使用 ISAPI。此方法确实允许您测试最终子域的功能,但仅限于最终重定向位置;您也无法真正测试 Cassini 中的原始域映射,因为 Windows 主机文件不允许使用端口规则。

如果您将单个应用程序设置为具有处理所有所需子域的功能的页面,您可以简单地将子域的请求重定向到所需位置的单个应用程序中。这可以像在单个应用程序中处理新子域的所有逻辑的页面文件夹一样简单。以下是 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/”)。

于 2008-12-29T15:21:43.653 回答
0

您需要从您的域提供商(从您购买域名的地方)设置域和子域,而不是从您的 ASP.NET 网站。

在本地,您无法对此进行测试,因为您只能作为开发 Web 服务器访问http://localhost 。

于 2008-12-29T09:20:26.033 回答