2009-10-02 99 views
3

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

管理网站需要提供一个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

你可能通过使用URL重写,你可以通过编写一个HTTP模块(实现IHttpModule的一类)在ASP.Net做并使用HttpContext对象的RewritePath方法实现这一

你可以设计你的模块,因此它会根据您的管理应用程序可以根据需要修改的一些配置文件来重写URL。

以下链接解释概念的更多:

随着这些IIS 6的配置可以稍微棘手,搜索有关配置通配符文章路径。
另外我不完全确定这种方法是否适用于子域。

+0

好主意。我正在编写一个小测试应用程序,看看这种方法是否可以与我需要的一起工作。 – 2009-10-02 16:54:57

+0

我终于证明了这个概念。感谢让我开始。 – 2009-11-04 21:47:53

+0

很酷,很高兴知道我的帮助:-) – RobV 2009-11-05 00:26:11

0

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

至于管理网络工具来管理所有......你将需要推出自己的管理工具。你如何做到这一点取决于你的应用程序的设计。我只是将两个应用绑定到同一个SQL数据库来存储每个子域路由。管理界面应该是相当平凡的。只需要一组相当简单的页面来执行存储在数据库中的路由上的CRUD操作即可。

在其他站点(公共站点)的global.asax中,您只需从DB获取路由并单独注册每个站点。

+0

我正在按照管理工具的描述进行操作 - 将子域名称存储在数据库中。你可以多谈一些关于“分别注册每一个”的内容吗? – 2009-10-07 13:39:26

+0

我只是想说,你会使用for/foreach循环遍历数据库中的每条路径,并将每个路径添加到RouteTable中。 – 2009-10-07 16:20:56

相关问题