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

时间:2012-05-04 11:16:20

标签: asp.net web-applications web iis-7.5 web-deployment

几年前,我记得我在一个域名情况下遇到了多个站点,其中一个站点位于根目录中。

当时我读了一篇明确向我解释的权威帖子为什么这是一个坏主意,我记得的是级联web.config问题是主要原因(强迫你解决冲突)儿童项目中与该项目基本不同的参考文献)。从此以后,我总是在自己的虚拟路径中部署任何网站,使用根目录中的单个重定向指向默认网站。

我似乎无法再找到权威参考,从那时起部署注意事项可能已经改变。

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

2 个答案:

答案 0 :(得分:2)

简短回答:隔离。 IMO托管不同网站/网络应用程序而不隔离它们的好处毫无意义。

答案很长:

优点:

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

缺点:

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

  • AppDomain或终身隔离:您必须关注您的网站AppDomains。如果您共享相同的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

答案 1 :(得分:1)

在一个域(以及IIS中的一个“网站”)下托管多个“站点”的主要反指示我可以想到的是用户身份隔离;登录到/ site1的访问者在配置例如/ site2时也会登录到/ site2 Windows身份验证,这是您可能不想要的。

同样可能适用于域级别设置的cookie。在IIS中,网站是一个安全边界(对于客户端而言),并且在同一个域中有多个“站点”,可能会导致安全漏洞......

至于在根目录中放置一个“站点”,在子文件夹中放置其他站点;为“根网站”设置的appsettings会级联到“子文件夹网站”;这可能是一个非问题,但它是一个潜在的安全漏洞。