同一个应用程序在多个应用程序池中启动

Same application started in multiple app pools

我刚刚在 IIS 中体验了一些我无法理解的东西,我希望其他人可以理解 :) ?

我在 IIS 中有一个站点,有多个应用程序。它们都配置了一个serviceAutostartProvider,它们是这样设置的:

-Production (site, points to c:\prod)
   * App1 (uses appPool 1, points to c:\prod\app1)
   * App2 (uses appPool 2, points to c:\prod\app2)
   * App3 (uses appPool 3, points to c:\prod\app3)

应用程序映射到磁盘上的不同路径(如上),并且应用程序在 /bin 文件夹中有不同的程序集。除了一些 "common" .net 程序集(如 autostartprovider)之外,它们没有任何共同点。

部署 App3 后,我可以看到它自动启动(因为它配置了 autostartprovider),但它启动了两次!?

一次在 appPool3 中(如预期的那样),一次在 appPool1 中。

我可以在我的日志中看到这一点,因为 autostartprovider 从 web.config 读取一个 appSetting(应用程序名称)并使用 w3wp processid 记录它。换句话说,日志显示:

"Booted App3, processid: {appPool3's id}"
"Booted App3, processid: {appPool1's id}"

怎么会这样?我错过了一些明显的东西吗?我已经验证 App3 files/assemblies 没有错误地出现在 App1 的路径中..

这似乎是 IIS 中已确认的错误,请参阅以下知识库文章:

Some services are preloaded unexpectedly on an IIS server in Windows KB2672277