如何在解决方案中新建子网站,Discuz项目子网站技术

在.net版的Discuz项目中,后台管理模块Discuze.Web.Admin是一个单独的模块,但是,打开解决方案的文件夹却找不到单独模块的文件夹存放,而是在Discuz.Web项目里的admin文件夹里。

经过分析,原来管理员模块是一个子网站,只是把网站建立在了Discuz.Web文件夹中,最后,在Discuz.Web项目包含在内就行了。子网站到底有什么好处了,很简单,就是方便管理,独立开发,当这个模块有问题时,单独编译这个模块,然后重新上传页面文件和DLL到主网站的Bin文件夹即可,完全不受其它影响。

官方的说法:管理模块是独立的模块,方便管理等...(具体还待验证——囧)

 Discuz.Web.Admin是一个类库,不是一个web应用程序,那就神了,类库在添加aspx页面,是没有全自动,只能是自己手工输入和关联页面设计文件(到现在还没研究出官方是如何添加的)。且在Discuz.Web项目的admin文件夹中,只是包含aspx文件,没有包含cs文件,这样的做法是,当发布网站时,自动发布Discuz.Web.Admin的项目(最后还是没搞明白是如何只包含aspx文件不包含cs文件的)。

子网站的优点是方便管理,模块独立,互补干扰。缺点:不能使用和包含子网站的Web.config和Global.asax这些全局文件,只能是共用主网站的,但是你可以在别的文件夹新建,单独调用就可以。

因为项目基于VS08开发的,所以有一些开发工具的特性无法考证。(原因是我机器没装08-囧)

以上是对Discuz.net项目的子网站新建技术的一点分析。

下面,我们来使用VS2010新建一个子网站来实战一下,在10我改变了做法,子网站不用类库去实现,而是用web应用程序去实现,好处是方便新建aspx页面,无需手动创建,且类库全部引用了。

首先,新建一个名为SiteCollection的Web应用程序

然后在新建一个名为Site的子网站Web应用程序,注意保存项目的路径,必须保存在SiteCollection的根目录里。

 

在SiteCollection项目里添加Site的引用

最后在SiteCollection项目点击显示所有文件,这里我就不用Discuz的做法,我不包含文件进去,因为包含进去,每次新建页面时都要包含在主项目里,非常不方便,我何必不包含了,直接在发布子网站的时候拷贝到主网站的目录里,方便,省事。

应为我这边是新建的VS10自带的示例,所以会包含Web.config和Global.asax文件,我把它干掉了。不然会报错。

运行测试一下:

注意URL的路径:

成功了。

下面我们来试下,调用主网站的Web.config的内容:

在Site的子网站的Default.aspx.cs文件中写

也成功了:

切记,网页查看时一定要在主站点里进行调试查看。

最后,如果Site的子网站项目有改动的地方,直接选择Site项目编译发布,得到dll和页面文件,上传到主网站相应的目录即可。非常的方便。

最后,附上项目的例子:(链接: https://pan.baidu.com/s/1c2s4los 密码: 8845)

 以上是个人的见解,错误也是有滴,最后还要谢谢大家的支持。囧

 

posted @ 2013-05-06 12:18  EasonJim  阅读(2208)  评论(10编辑  收藏  举报