一个虚拟主机上放多个网站
Asp.net不像Asp一样,建个文件夹就能放一个程序,互不干扰,为了让一个虚拟主机能放多个Asp.net,查找了不少资料,没有一个答案是完美的,不过有些资料倒给了我一些启发,通过思考,加上实践,终于探索出一个新路子,实现了能简单提出为一个网站,也能合并的方案。同时感谢菜菜灰的帮助,请看实现的效果:
我的个人网站:http://www.socan.com.cn/
客户管理系统:http://www.socan.com.cn/crm
首先提一下要放在同一个虚拟主机的网站的要求:
1.Bin文件夹下的文件合并能保证各网站能调用到要用到的类。
2.App_Theme下的主题能合并,并且要互不影响。
3.文件中的链接必须是相对路径。
4.Web.config要注意继承关系。
第一点,因为我只有一个数据库,所以表名都是有前缀的,就像.NET成员资格里的表都有aspnet的前缀一样,将所有网站放在同一解决方案下,这就像三层结构是各个网站的并集。
第二点,App_Theme里的主题在各个网站都用不同的名,如果一个网站有多个主题选择,可以采用加前缀的方法,这样才能使主题能合并而不出错.
第三点,当然是重构现有网站啦,链接全改成相对路径,母版页和用户控件要注意,Css相对当前文件,而Js相对要使用的文件,客户端控件相对要使用的文件,服务器控件相对当前文件。最好开发的时候不使用IIS调拭,这样可减少由于习惯问题而直接用相对根目录路径的几率.
第四点,根目录必须有Web.config,注意不要与子目录的冲突,生成后还要记得把子目录里的Web.config的authentication,profile,membership,roleManager四个节点去掉.
有了这个方法,只要开发的时候注意以上几点,就能让空间合理得利用了。