应用程序和虚拟目录之间的区别


11

我是asp.net开发人员,我总是在IIS中的应用程序和虚拟目录之间感到困惑。似乎在iis 6.0中,您只能创建虚拟目录。


1
在IIS6中,您将创建一个虚拟目录,然后将其转换为应用程序。
马克·亨德森

Answers:


13

这两个很容易混淆,人们经常互换使用这些术语。

虚拟目录只是指向磁盘上其他位置的指针。它指向磁盘上与其父文件夹不同的固定路径。

应用程序是不同文件夹之间的边界。ASP.NET使用它来创建新的AppDomain根(或应用程序根)。应用程序根目录使用不同的global.asax,bin文件夹和其他app_ [folders。]。

在IIS6和IIS7中,如果创建虚拟目录,则默认情况下它也不是应用程序。ASP.NET会将其与其父文件夹放在相同的AppDomain中。

在IIS6中,可以通过右键单击->属性并创建,将虚拟目录或常规文件夹转换为应用程序。

在IIS7中,这些选项的名称不同,但其背景相同。创建虚拟目录使您可以创建一个vdir,该vdir仍是其父级的AppDomain的一部分(即不是应用程序)。

实际上,“添加应用程序”选项会创建一个虚拟目录,然后将其标记为应用程序。(您会注意到它允许您指定路径)。

您也可以右键单击现有文件夹(或vdir)并转换为应用程序。这是在现有常规或虚拟文件夹上创建应用程序边界的方法。


IIS 7上的默认网站正在运行MOSS 2007(SharePoint)。由于我希望用户感觉自己仍在门户上,因此我创建了一个品牌类似的ASP.NET Web应用程序,并将其设置为同一站点下基于虚拟目录的应用程序。默认网站和此ASP.NET应用程序都使用相同的应用程序池。首先,这是安全/良好做法吗?其次,如果我在ASP.NET应用程序中启用和使用会话,这是否会以任何其他方式危害SharePoint托管会话的完整性/性能,从而以其他方式影响SharePoint?
网络用户

@WebUser可以将它们放在相同的应用程序池中是可以的,并且由于它们是应用程序池中的独立应用程序,因此会话状态将是独立且彼此隔离的。但是,我还是建议您使用单独的应用程序池。如果某件事情确实失败了,那么您不必拆掉它们来回收或修复另一件。而且,您将拥有更大的灵活性来锁定NTFS权限,以将它们彼此隔离。
Scott Forsyth-MVP 2015年

@ ScottForsyth-MVP因为我希望他们完全孤立,所以我听了您的建议。我创建了一个新的应用程序池和一个新的服务帐户,并使用文章设置的身份。我不知道为什么,但是应用程序System.UnauthorizedAccessException花了一段时间才显示页面。该应用程序仍然可以正常运行,但是运行缓慢,并产生异常提示我打开Visual Studio。对我想念的东西有什么想法吗?
网络用户

@ ScottForsyth-MVP您能否看一下我在ServerFault上发布的这个问题?谢谢!
网络用户

@WebUser。您的自定义身份可能需要添加到IIS_WPG组中。这是IIS6中的要求。我也回复了您的其他帖子。
Scott Forsyth-MVP 2015年

2

您也可以检查。. 您知道吗:IIS 7 / 7.5中虚拟目录与应用程序之间的区别

编辑:引用该网站,因为该链接已失效;

在IIS 7 / 7.5中,您可以选择创建虚拟目录和应用程序。

什么是虚拟目录?

虚拟目录是映射到本地物理目录或远程服务器上的目录的目录。虚拟目录将在与父进程相同的工作进程中执行其代码。网站和虚拟目录的应用程序池是相同的。

图05

什么是应用程序?

除了可以选择在其他应用程序池中运行应用程序外,应用程序与虚拟目录相同。

图06

注意:这是上面的屏幕快照在applicationhost.config中的样子


0

虚拟目录仅是指向或引用本地计算机或远程服务器中的文件夹而已。如果要在IIS的“默认网站”下创建虚拟目录。假设如果默认网站由于某些内部问题而崩溃,则您将无法访问虚拟目录。

添加应用程序不过是一组通过协议传递内容或提供服务的文件。应用程序属于应用程序池;假设由于某些问题,默认网站崩溃了,它不会影响属于应用程序池的任何应用程序。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.