【问题标题】:IIS6 | Application Pools | ASP.NET FrameworkIIS6 |应用程序池 | ASP.NET 框架
【发布时间】:2009-03-10 19:22:39
【问题描述】:

在 IIS6 中,可以在同一个应用程序池中运行多个 ASP.NET 应用程序。这很好,除了 IIS6 中没有任何东西可以阻止您在同一个池中运行多个 .NET 版本。

当您在 IIS7 中创建应用程序池时,您必须明确声明 .NET 版本将在该池中运行。在 IIS7 中在同一个应用程序中运行多个 .NET 版本是不可能的。

如何在我的 IIS6 服务器上强制执行此类规则,以防止我的部署团队产生此类问题?

【问题讨论】:

  • 这不是我能不能做到的问题,我知道。我想要做的是每个池只强制一个 .NET 框架版本。

标签: asp.net iis-6


【解决方案1】:

我做什么:

第 1 步。创建以下应用程序池:

.NET 1.1 应用程序
.NET 2.0 应用程序

第 2 步。禁用“默认应用程序池”

现在,任何时候在 IIS 中配置新应用程序时,它都不会立即运行,因为默认应用程序池已禁用。这会强制配置应用程序的人员选择适用于应用程序的 .NET 框架版本的应用程序池。

【讨论】:

    【解决方案2】:

    我们倾向于为每个站点使用一个应用程序池,以便每个应用程序都隔离在自己的进程空间中。应用程序池回收只会影响单个应用程序,每个工作进程最终都会拥有自己的 4gb 内存空间。编程不当的应用程序没有机会影响其他应用程序,从而导致高度孤立的部署模型。

    我们还在运行 32 位应用程序池的 x64 操作系统构建上进行了标准化。虽然使用这种技术存在开销,因为每个应用程序 ppol 都包含一个单独的 .Net 框架副本,但我们认为应用程序空间的增加粒度增加了我们部署的稳定性。您还可以将每个应用程序作为其自己的域身份运行,从而进一步隔离内存空间并消除在 Web 配置中模拟身份的任何需要。

    使用 IIS 7,您可以将每个应用程序池作为 32 位或 64 位运行,因此您可以在 64 位应用程序池中运行大内存应用程序。 IIS 7 应用程序池的安全性也得到了简化。

    【讨论】:

      【解决方案3】:

      我不认为你可以。我所做的是在 IIS 6 中命名我的应用程序池,以便它们显示它们托管的 .Net 版本。这样,在创建新应用程序时就可以轻松选择正确的应用程序池。

      【讨论】:

        【解决方案4】:

        如果我没记错的话,您还可以在 IIS6 (Windows 2003) 中设置应用程序池。为每个正在使用的框架版本创建一个应用程序池。

        我不知道强制执行应用程序使用的 .NET 框架版本的任何可能性。如果您设置了一个应用程序池以使用 .NET 1.1,并且您在该应用程序池中运行了一个 .NET 2.0 应用程序,您将在应用程序中遇到异常(黄屏死机),因为它找不到一些引用的程序集和类。

        【讨论】:

          猜你喜欢
          • 2013-09-28
          • 2011-01-12
          • 2011-09-26
          • 2011-11-18
          • 1970-01-01
          • 1970-01-01
          • 2016-04-17
          • 2012-08-31
          • 2015-11-12
          相关资源
          最近更新 更多