可以在ASP.Net应用程序中以编程方式管理子域吗?

时间:2009-10-02 13:57:37

标签: asp.net subdomain

我有一个用ASP.Net 3.5编写的应用程序,需要管理不同网站的子域名。管理网站和受控网站托管在不同的Windows服务器上,但都运行IIS 6.0。

管理网站需要提供一个可以在受控站点上添加或删除子域的UI,以便对这些子域(即mysubdomain.controlledsite.com和thatothersubdomain.controlledsite.com)的请求导航到受控站点的不同部分Web应用程序(或者,如果有必要,将所有这些设置为不同的Web应用程序,然后还必须以编程方式创建或删除)。

我从哪里开始这个?这甚至可能吗?我在其他一些SO问题(Is it possible to make an ASP.Net MVC route based on a subdomain?)上看过一些关于路线的问题,但我不知道这是否符合我的情况(我不使用MVC)。我可以修改管理网站和受控网站上的代码,所以如果要进行编程以使这项工作在任何一端,我可以做到。

具体来说,如果代码保持在受控网站上的方式(我可以在必要时进行更改),我需要接收http://xxxx.mysite.com/之类的请求并将其映射到http://www.mysite.com/Home/xxxx/,同时保持客户端看作前者的URL。

2 个答案:

答案 0 :(得分:2)

您可以通过使用URL重写来实现这一点,您可以通过编写HTTP模块(实现IHttpModule的类)和使用HttpContext对象的RewritePath方法来在ASP.Net中执行此操作

您可以设计模块,以便根据管理应用程序可以根据需要更改的某个配置文件重写URL。

以下链接更多地解释了这些概念:

使用IIS 6配置这些可能会稍微复杂一些,搜索有关配置通配符路径的文章 另外,我不完全确定这种方法是否适用于子域。

答案 1 :(得分:0)

asp.net MVC附带的默认路由框架不能使用URL的域部分。我自己有点失望。但是有一个article about using a custom RouteBase来启用子域方案。我还没有尝试过,所以我不能保证所描述的技术,但它至少看起来很有希望。

至于管理所有这些的管理员工具......你需要自己动手制作管理工具。如何做到这一点取决于您的应用程序的设计方式。我只是将两个应用程序绑定到同一个SQL数据库以存储每个子域路由。管理界面应该是相当简单的。只需要一组相当简单的页面就可以对存储在DB中的路径进行CRUD操作。

在另一个站点(公共站点)的global.asax中,您只需从数据库中获取路由并单独注册每个路由。