高深的asp.net二级域名方法我不会,我只会土方法,但是却也不失为一个好方法!

文前声明:小生对“二级域名”、“分站”这类概念不是很清楚,本文若是对各位多少有点用,就留个笑脸;若是不才,各位认为完全时垃圾,也敬请拍砖。如果,阁下有更好、更简便的方法,也可以提出来,以供大家(特别是我)学习学习……

这几天,外卖汇网站开始需要实施其他城市的扩展(目前就杭州站有,正在准备上海站的开通),可是遇到一个问题(不说大家也知道了),就是如何通过二级域名指向不同的城市站点。目前外卖汇的域名是waimaihui.com,希望将http://hz.waimaihui.com/指向杭州站,而将http://sh.waimaihui.com/指向上海站。这个自然可以通过配置DNS来简单的实现,但是考虑到后期其他城市的扩展,如果都是通过配置DNS来实现的话,未免可扩展性也太差了。所以,考虑通过程序实现。

考虑到,城市之间的数据基本没有交互的地方,故每个城市都采用一个独立的数据库(当然,这不是一个好的解决方法),这就使得其实不同城市之间只有数据库不同罢了,其他都是一样的,除了网页的标题这类的页面内容,而且这些也只是换个城市名称罢了。

所以,我就想到了一个另类的方法:通过判断用户请求的hostName来判断用户访问的是哪个城市的站点,不同的城市使用不同的数据库连接字符串,这些数据库连接字符串保持为web.config中的key值。 

HostName = HttpContext.Current.Request.Url.Host.ToString(); //获取URL主机地址   

UserHost = HostName.Split(new Char[] { \’.\’ }); //数组,以“.”分隔


通过判断UserHost[0]的值,来决定用户访问的城市站点。比如说,用户请求的页面时http://hz.waimaihui.com/那么UserHost[0]=”hz”

这里也遇到了另一个问题:何时设置这个字符串,用户的访问你是无法确定的,也许用户前一秒访问的时http://hz.waimaihui.com/,可是后一秒也许就是http://sh.waimaihui.com/,如何使得连接字符串做到正确的切换呢?

我选择引入Global.asax,这Application_BeginRequest事件中判断用户请求的页面,然后设置连接字符串为不同的key值,这个事件会在用户每次请求页面时被触发,这样就可以始终保持连接字符串时正确的了。

 

版权声明:本文为adaiye原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/adaiye/archive/2008/12/01/1345362.html