1

我知道这听起来令人困惑..所以我尽量简短。

我在 Windows Server 2008 R2 上有一个带有 ASP.NET 4 经典应用程序池的主 Web;在本网站内有一个包含本网站所有管理功能的子文件夹;主要开发人员决定将此子文件夹转换为另一个 ASP.NET 4 经典应用程序池。

所以基本上我将主文件夹转换为应用程序,而子文件夹也转换为应用程序。

到目前为止,我们没有遇到任何问题,但是我不相信这个解决方案是最佳解决方案。

我想知道你对此的想法。

4

2 回答 2

1

在亲身体验后,我不会推荐这种方法。

不久前,我在一个大型 Web 应用程序中开发了一些新功能,需要添加一个新的 HttpModule 和相应的 web.config 条目。实时发布后不久,我们接到一个电话,说明我们不维护并且我不知道的应用程序被破坏了。

原因是我的 web.config 设置需要这个子应用程序没有的新 HttpModule,因此它崩溃了,故障排除和缓解这个问题需要时间和精力。

下次我想将我们的应用程序从 .NET 3.5 升级到 .NET 4 时,我们必须在升级应用程序后确认他们的应用程序可以正常工作,这再次花费了时间和精力。

长话短说,创建一个新的应用程序池和设置一个应用程序需要几分钟甚至几秒钟,为了一个根本没有必要或有益的架构协调这些更改需要过多的时间和精力。

于 2013-08-21T10:46:35.757 回答
1

有很多理由将应用程序分离到它们自己的应用程序池中。例如,当您有一个单独的应用程序池时,会启动一个新的 W3WP 进程,这意味着在某些情况下它可以为您提供更好的性能。新进程也将拥有自己的内存分配,因此覆盖缓存条目不会干扰主站点上的缓存条目(这也可能很糟糕)。最后也是最重要的是,如果您的管理员应用程序池崩溃,它不会影响您客户的主应用程序池。在很多情况下,应用程序管理部分最有可能失败,因为它们包含如此多的功能(但并非所有情况都如此)。

以上所有这些好事也会产生负面影响。例如,您可能希望将管理应用程序中的缓存项强制到期到站点的前端部分,现在这将变得更加困难。此外,这些应用程序现在应该在 Visual Studio 中拆分为两个单独的应用程序,否则部署将是古怪的(两者都必须使用同一个 bin 文件夹中的项目)。如果它是一个子目录(正如您所提到的),那么您需要关闭 web.config 继承,否则您会遇到各种问题。看看这个问题如何做到这一点

使用 inheritInChildApplications 避免子 Web 应用程序中的 web.config 继承

我个人确实认为在某些情况下,将应用程序池拆分为管理部分可能是有益的,但这取决于应用程序本身,您必须查看自己的应用程序并做出决定。

于 2013-08-21T11:04:28.757 回答