为什么我不应该将我的asp.net网站或webapp部署到IIS中域的根目录?

Abe*_*bel 5 asp.net web-applications web-deployment iis-7.5 web

几年前,我记得在一个域名情况下我在一个多站点上挣扎,其中一个站点放在根目录中.

当时我读了一篇权威的帖子,清楚地向我解释了为什么这是一个坏主意,我记得的是级联web.config问题是主要原因(迫使你在子项目中取消引用冲突的引用,这些引用基本上与项目).从此以后,我总是在自己的虚拟路径中部署任何网站,使用根目录中的单个重定向指向默认网站.

我似乎无法找到权威参考,从那时起部署考虑可能已经改变.

这种情况的优点和可能性是什么?我问,因为我工作的公司对于以这种方式分离部署感到皱眉,我认为这不是一个好主意.

Joe*_*lly 2

简短的回答:隔离。在我看来,托管不同的网站/Web 应用程序而不隔离它们的好处是毫无意义的。

长答案:

优点:

  • 使用没有特定绑定(即别名)的单个端口:如果您无权访问网站绑定,那么它很有用
  • 快速部署和动态网站创建:您可以创建新的子网站,而无需在 IIS 端声明它
  • 共享设置:将网站基本设置应用于所有子网站(文档、mime 类型等...)

缺点:

  • 应用程序池隔离:没有身份隔离,没有工作进程隔离,没有故障/恢复隔离等...(超时,内存限制等...)

  • AppDomain 或终生隔离:您必须照顾好您的网站 AppDomain。如果您共享相同的AppDomain,则您将共享相同的生命周期:如果卸载AppDomain,则该AppDomain下的所有网站都将关闭并重新加载(即,如果您触摸AppDomain web.config)

  • 架构隔离:某些 Web 应用程序开发需要在 IIS 端进行一些调整,如果您仅针对一个应用程序调整 IIS 池或网站,则会对所有网站产生影响。例如,我考虑 32 位和 64 位设置或通配符映射。

  • 代码和安全隔离:在同一工作进程和/或 AppDomain 中运行的应用程序针对跨应用程序访问/黑客/攻击的保护较少。您必须更加警惕,以确保其他应用程序无法读取来自应用程序的信息。

  • 审计:审计网站的活动和故障可能会更加困难。

Web 应用程序隔离始终是共享环境中保护应用程序免受彼此影响的目标。

从 IIS 7 开始,应用程序池隔离进一步采用“应用程序池标识”:http://www.adopenstatic.com/cs/blogs/ken/archive/2008/01/29/15759.aspx

我也找到了这篇文章: http: //searchsecurity.techtarget.com/tip/Web-application-isolation

您还应该查看 SharePoint 网站集体系结构。这是想法:http://blogs.msdn.com/b/sgoodyear/archive/2011/11/18/9848865.aspx