IIS 8.5pipe理器:应用程序池和站点节点丢失

我遇到了一个奇怪的问题,我一直无法解决,并没有find任何信息:我们的IIS 8.5的IISpipe理器中的应用程序池站点节点失踪了!

在这里输入图像说明

这是我们使用非常相似的设置运行的四台服务器之一,但它是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放入服务器并查看IISpipe理器时, 应用程序池站点节点不再可见。 相反,事件日志中充满了类似以下的错误(由于尝试打开“ 起始页”下方的“ 服务器”节点 ):

 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) 

经过几次尝试恢复工作iisconfiguration(C:\ Windows \ System32 \ inetsrv \ Config \ applicationhost.config),我们甚至完全卸载IIS并重新安装它(有一些困难),但无济于事。 在磁盘上search丢失的dll,我们发现他们的版本实际上是8.5。 所以我们继续用C:\ Windows \ System32 \ inetsrv \ Config \ administration.config中的8.5.0.0replace所有8.0.0.0的实例,但错误仍然存​​在(仍提到8.0.0.0!)。

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

任何接受者?

终于解决了这个我的情况:

在我看来,可能通过msdeploy和/或Visual Studio 2012损坏applicationhost.config文件。虽然看起来不错。 但经过彻底的比较,我发现它是(站点)(/网站)在错误的地方,树视图不会在IISpipe理器中出现。 把网站部分移回到应该做的地方。 (就在(/ log)部分之后)

MSdeploy否则工作正常只是搞砸IIS经理网站视图。

只发生在通过VS2012部署网站的服务器和运行IIS8.5的2012R2的msdeploy上

卸载IIS时,是否删除了C:\Windows\System32\inetsrv ? 如果不是,破碎的东西可能会留在那里。

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

不知道这是否是这种情况,但是对于我在系统中遇到的类似情况,这只是一个不匹配版本的情况。

即,最初创build共享configuration的服务器是带有IIS 8.0的Server 2012,但是服务器试图访问它并显示所提到的症状是带有IIS 8.5的Server 2012 R2。

在加载IISpipe理器后查看事件日志,您应该看到一系列错误,指出这是一个缺less的模块问题,可能是版本控制。