IIS 8.5 管理器:缺少应用程序池和站点节点

IIS 8.5 管理器:缺少应用程序池和站点节点

我遇到了一个奇怪的问题,我无法解决,也没有找到任何相关信息:应用程序池站点我们的 IIS 8.5 的 IIS 管理器中的节点丢失了!

在此处输入图片描述

这是我们运行的四台服务器中的一台,设置非常相似,但它是唯一一台使用 Windows Server 2012 R2 和 IIS 8.5 的服务器:我们有默认的应用程序池,以及一个用于我们的应用程序的应用程序池,以及使用我们的应用程序池的站点和 Web 应用程序。一切都运行良好,直到 2014 年 6 月 1 日星期日,我们从监控服务收到一条错误消息,称我们的应用程序在该服务器上不可用。

我们在事件日志中发现了以下条目:

[20:44:24] A worker process '27520' serving application pool 'camping.info' failed to stop a listener channel for protocol 'http' in the allotted time.  The data field contains the error number.
[20:44:24] A process serving application pool 'camping.info' exceeded time limits during shut down. The process id was '27520'.
[20:45:54] A worker process '40744' serving application pool 'camping.info' failed to stop a listener channel for protocol 'http' in the allotted time.  The data field contains the error number.
[20:45:54] A process serving application pool 'camping.info' exceeded time limits during shut down. The process id was '40744'.
[20:45:54] Application pool 'camping.info' is being automatically disabled due to a series of failures in the process(es) serving that application pool.

当我们通过 RDP 进入服务器并查看 IIS 管理器时,应用程序池站点节点不再可见。相反,事件日志中充满了类似以下的错误(由于尝试打开服务器节点以下首页):

IISMANAGER_ERROR_LOADING_PROVIDER_TYPE

IIS Manager could not load type 'Microsoft.Web.Management.AspNet.SessionState.SessionStateModuleProvider, Microsoft.Web.Management.Aspnet, Version=8.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' for module provider 'SessionState' that is declared in %windir%\system32\inetsrv\config\administration.config. Verify that the type is correct, and that the assembly that contains the module provider is in the Global Assembly Cache (GAC).

Exception:System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.Web.Management.Aspnet, Version=8.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.
File name: 'Microsoft.Web.Management.Aspnet, Version=8.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'
   at System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMarkHandle stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName, ObjectHandleOnStack type)
   at System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName)
   at System.Type.GetType(String typeName, Boolean throwOnError)
   at Microsoft.Web.Management.Server.AdministrationModuleProvider.GetModuleProvider(String userName, String connectionName)

在尝试恢复有效的 iis 配置 (C:\Windows\System32\inetsrv\Config\applicationhost.config) 几次后,我们甚至完全卸载了 IIS 并重新安装(虽然有些困难),但无济于事。在磁盘上搜索丢失的 dll 时,我们发现它们的版本实际上是 8.5。因此我们继续将 C:\Windows\System32\inetsrv\Config\administration.config 中的所有 8.0.0.0 实例替换为 8.5.0.0,但错误仍然存​​在(仍然提到 8.0.0.0!)。

有趣的是我们的应用程序再次运行在服务器上 - 只是我们无法在 IIS 管理器中看到它。我们希望能够通过 GUI 进行管理并消除事件日志中的这些错误。

有谁愿意接受吗?

答案1

最终解决了我的情况:

在我的计算机上,似乎 msdeploy 和/或 Visual Studio 2012 损坏了 applicationhost.config 文件。不过看起来还好。但经过彻底的比较后,我发现它将 (sites) (/sites) 放在了错误的位置,树视图没有出现在 IIS 管理器中。将 sites 部分移回应在的位置就可以解决问题。(就在 (/log) 部分之后)

MSdeploy 本来运行良好,只是搞砸了 IIS 管理器站点视图。

我只在通过 VS2012 和 msdeploy 部署站点的服务器上发生过这种情况,2012R2 运行 IIS8.5

答案2

卸载 IIS 时,您是否删除了 下的所有内容C:\Windows\System32\inetsrv?如果没有,损坏的内容可能会留在那里。

答案3

不确定这里是否是这种情况,但对于我在我们的系统上遇到的类似情况,这只是版本不匹配的情况。

例如,最初创建共享配置的服务器是带有 IIS 8.0 的 Server 2012,但尝试访问它并显示所述症状的服务器是带有 IIS 8.5 的 Server 2012 R2。

加载 IIS 管理器后查看事件日志,您应该看到大量错误,表明存在缺少模块的问题,很可能是由于版本控制问题。

答案4

尝试从 Windows 组件(控制面板 --> 程序和功能)重新安装 IIS。

相关内容