IIS - 虚拟目录与应用程序的异同

- 日理万妓 2021-06-26 16:06 554阅读 0赞

在Windows 7 IIS7中,对服务器建立站点后,有二种添加子站点的方式
A. 虚拟目录
B. 应用程序

简单总结下二者之间的异同

A.虚拟目录

虚拟目录是指在站点下建立一个虚拟子目录,指定一个固定的物理路径做为站点的应用路径。

  1. 虚拟目录与父级站点共用一个应用程序池
    例如:站点TestWebc:\Inetpub\wwwroot\ TestWeb)下建立了SubTestA(D:\SubTestA)的虚拟目录
    TestWeb为设定了Framework V2.0,则SubTestA也必须是Framework V2.0的应用程序,否则将给带来Framework不匹配的各种错误。
  2. 虚拟目录必须将可执行文件(dll等)放置在父级站点的bin目录下。
  3. 虚拟目录中的web.config文件继承父级站点的web.config.
    就是说如果父级站点声明过的引用,在虚拟目录下的web.config中不应重复声明
  4. 虚拟目录中的应用其根目录为父级站点的根目录
  5. 虚拟目录中的AppSetting.config设置应使用相对路径来进行引用。

B. 应用程序

应用程序是指在父级目录下建立了一个单独的应用程序,独享应用程序池

  1. 应用程序可以与父级站点拥有不同的应用程序池
    即可以达到TestWebFramework V2.0,而SubTestA可以是Framework V4.0,二者互不影响
  2. SubTestA的可执行文件独立的放置在根目录下的bin中,不能放置在WebTestbin目录中
  3. SubTestAweb.config独立于WebTestweb.config
  4. SubTestA中的应用其根目录为父级站点的根目录
  5. 虚拟目录中的AppSetting.config设置应使用相对路径来进行引用。

应用程序是建立在虚拟目录的基础之上,而应用程序独立于父级站点拥有独立的程序运行机制,这让同一站点拥有了运行不同框架集而不相互影响的能力
实际运用中需要根据不同的情况来选择虚拟目录或应用程序

追加疑问:

IIS下网站与网站下一个 虚拟目录/应用程序 能否共享session?比如IIS下有test网站,test网站下有一个subtest 虚拟目录/应用程序 是另一个ASP.NET项目的站点,主站点test和 虚拟目录/应用程序 subtest 之间能否直接共享session

答案:不能!因为每个虚拟目录相当于是一个应用程序,而应用程序之间的Session是不共享的!只能通过cookies来共享主站点和 虚拟目录/应用程序 之间的信息,当然也可以考虑一些变通方案

发表评论

表情:
评论列表 (有 0 条评论,554人围观)

还没有评论,来说两句吧...

相关阅读