我知道这听起来很混乱..所以我想尽可能简短。
我在Windows Server 2008 R2上有一个带有ASP.NET 4经典应用程序池的主Web;在这个网站内有一个子文件夹,其中包含该网站的所有管理功能;主开发人员决定将此子文件夹转换为另一个ASP.NET 4经典应用程序池。
所以基本上我将主文件夹转换为应用程序,子文件夹也转换为应用程序。
到目前为止,我们没有任何问题,但我不相信这个解决方案是最佳解决方案。
我想知道你对此的想法。
答案 0 :(得分:1)
在亲身体验之后我不会推荐这种方法。
不久前,我在大型Web应用程序中开发了一些新功能,需要添加新的HttpModule和相应的web.config条目。在现场发布后的短时间内,我们接到一个电话,说明我们没有维护的应用程序,我不知道是否已损坏。
原因是我的web.config设置需要这个子应用程序没有的新HttpModule,因此它崩溃,故障排除和缓解这个问题需要花费时间和精力。
下次我想将我们的应用程序从.NET 3.5升级到.NET 4时,我们必须确认他们的应用程序在升级我们的应用程序后会好起来,这需要花费时间和精力。
长话短说,创建一个新的应用程序池并设置一个应用程序需要几分钟甚至几秒钟,这需要花费大量的时间和精力来协调这些根本不必要或有益的架构的更改。
答案 1 :(得分:1)
将应用程序分离到自己的应用程序池中有很多原因。例如,当您拥有一个单独的应用程序池时,新的W3WP进程将被启动,这意味着在某些情况下它可以为您提供更好的性能。新进程也将拥有自己的内存分配,因此覆盖缓存条目不会干扰主站点上的缓存条目(这也可能不好)。最后也是最重要的是,如果管理员的应用程序池崩溃,它将不会影响客户的主应用程序池。在很多情况下,应用程序管理部分最有可能失败,因为它们包含如此多的功能(但并非所有情况都是如此)。
上述所有好事也会产生负面影响。例如,您可能希望强制将缓存项从管理应用程序到达站点的前端部分,现在这将变得更加困难。此外,这些应用程序现在应该在visual studio中拆分为两个独立的应用程序,否则部署将是古怪的(两者都必须使用相同bin文件夹中的项目)。如果它是一个子目录(正如你所提到的那样)那么你需要转换web.config继承,否则你会遇到各种各样的问题。看看这个问题怎么做
Avoid web.config inheritance in child web application using inheritInChildApplications
我个人认为,在某些情况下,为管理部分拆分应用程序池可能是有益的但,这取决于应用程序本身,您必须查看自己的应用程序并做出决定。