在Windows 7 IIS7中,对服务器建立站点后,有二种添加子站点的方式
A. 虚拟目录
B. 应用程序
简单总结下二者之间的异同
A.虚拟目录
虚拟目录是指在站点下建立一个虚拟子目录,指定一个固定的物理路径做为站点的应用路径。
- 虚拟目录与父级站点共用一个应用程序池
例如:站点TestWeb(c:\Inetpub\wwwroot\ TestWeb)下建立了SubTestA(D:\SubTestA)的虚拟目录
若TestWeb为设定了Framework V2.0,则SubTestA也必须是Framework V2.0的应用程序,否则将给带来Framework不匹配的各种错误。 - 虚拟目录必须将可执行文件(
dll等)放置在父级站点的bin目录下。 - 虚拟目录中的
web.config文件继承父级站点的web.config.
就是说如果父级站点声明过的引用,在虚拟目录下的web.config中不应重复声明 - 虚拟目录中的应用其根目录为父级站点的根目录
- 虚拟目录中的
AppSetting.config设置应使用相对路径来进行引用。
B. 应用程序
应用程序是指在父级目录下建立了一个单独的应用程序,独享应用程序池
- 应用程序可以与父级站点拥有不同的应用程序池
即可以达到TestWeb为Framework V2.0,而SubTestA可以是Framework V4.0,二者互不影响 SubTestA的可执行文件独立的放置在根目录下的bin中,不能放置在WebTest的bin目录中SubTestA的web.config独立于WebTest的web.configSubTestA中的应用其根目录为父级站点的根目录- 虚拟目录中的
AppSetting.config设置应使用相对路径来进行引用。
应用程序是建立在虚拟目录的基础之上,而应用程序独立于父级站点拥有独立的程序运行机制,这让同一站点拥有了运行不同框架集而不相互影响的能力
实际运用中需要根据不同的情况来选择虚拟目录或应用程序
追加疑问:
IIS下网站与网站下一个 虚拟目录/应用程序 能否共享session?比如IIS下有test网站,test网站下有一个subtest 虚拟目录/应用程序 是另一个ASP.NET项目的站点,主站点test和 虚拟目录/应用程序 subtest 之间能否直接共享session?
答案:不能!因为每个虚拟目录相当于是一个应用程序,而应用程序之间的Session是不共享的!只能通过cookies来共享主站点和 虚拟目录/应用程序 之间的信息,当然也可以考虑一些变通方案
本文详细对比了Windows7IIS7环境下站点配置的两种方式:虚拟目录与应用程序的区别。阐述了两者在应用程序池、配置文件、可执行文件存放及框架版本兼容性上的异同,以及如何根据需求选择合适的配置方式。
1万+

被折叠的 条评论
为什么被折叠?



