IIS - 虚拟目录与应用程序的异同
在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.config
SubTestA
中的应用其根目录为父级站点的根目录- 虚拟目录中的
AppSetting.config
设置应使用相对路径来进行引用。
应用程序是建立在虚拟目录的基础之上,而应用程序独立于父级站点拥有独立的程序运行机制,这让同一站点拥有了运行不同框架集而不相互影响的能力
实际运用中需要根据不同的情况来选择虚拟目录或应用程序
追加疑问:
IIS
下网站与网站下一个 虚拟目录/应用程序 能否共享session
?比如IIS
下有test
网站,test
网站下有一个subtest
虚拟目录/应用程序 是另一个ASP.NET
项目的站点,主站点test
和 虚拟目录/应用程序 subtest
之间能否直接共享session
?
答案:不能!因为每个虚拟目录相当于是一个应用程序,而应用程序之间的Session
是不共享的!只能通过cookies
来共享主站点和 虚拟目录/应用程序 之间的信息,当然也可以考虑一些变通方案
还没有评论,来说两句吧...