从IIS7中的应用程序池中删除幻像应用程序


38

我的一个应用程序池中有一个应用程序,其虚拟路径为“ /Site/login.aspx”。我想删除它,但是它不再存在于我的计算机上,这导致我在设置AppFabric时遇到问题。

我了解您可以通过在IIS中重新创建应用程序然后单击“删除”来删除这些幻像应用程序。这将摆脱池中的应用程序,但是在这种情况下,由于虚拟路径中的/login.aspx,我无法重新创建应用程序

有什么想法可以删除此错误条目吗?

谢谢

Answers:


44

由于我有同样的问题;应用程序池中不再存在应用程序,我进行了一些研究,最终设法解决了这个问题。

以下是一些步骤:

  1. 使用文本编辑器找到并编辑IIS 7配置文件“ applicationHost.config”。它应该存储在“ C:\ windows \ system32 \ inetsrv \ config ”中,由于该文件夹受到了“保护”,因此我通常按照以下方式进行编辑:
    1. 打开Windows资源管理器
    2. 导航到“ C:\ windows \ system32 \ inetsrv \ config”
    3. 复制文件“ applicationHost.config”
    4. 将其粘贴到可以编辑的文件夹中,例如桌面
    5. 用选择器的编辑器将其打开并进行编辑
    6. 使用Windows资源管理器将其复制回“ C:\ windows \ system32 \ inetsrv \ config”
  2. 备份您的“ applicationHost.config”文件!
  3. 使用“ applicationHost.config”中的文本编辑器搜索不存在的应用程序。它们应该位于<application ...>XML节点内的某个位置。
  4. 删除<application ...>所有幻像应用程序的节点。
  5. 保存文件并将其复制回“ C:\ windows \ system32 \ inetsrv \ config”
  6. 刷新IIS管理控制台。您的应用程序池现在应该没有以前删除的虚拟应用程序。
  7. 实际上删除现在为空的应用程序池。

这对我有用,如果对您不起作用,请在此处发表评论。一个很好的帮助是IIS论坛上的这篇文章


6
另外,我碰到了这篇文章。我没有把它作为解决上述工作对我来说狩猎僵尸-如何删除孤立的IIS Web应用程序
山口

1
@Col上面评论中的链接中的Powershell方法是一种干净的解决方案,并且效果很好。
Recep


1

简单得多:

  1. 查看过时的应用程序X并记住(旧的)路径Y
  2. 使用资源管理器创建(旧)路径/文件夹Y
  3. 刷新IIS管理控制台
  4. 您将找到刚刚创建的文件夹Y和分配的应用程序X
  5. 右键单击(旧)应用程序X,然后选择“删除”
  6. 使用资源管理器删除路径Y
  7. 再次刷新IIS管理控制台
  8. 欢呼

1

子应用程序不会自动删除,IIS管理器无法在树中显示它们,所以这就是您的问题...

一种快速而强大的方法是使用PowerShell脚本来获取所有应用程序,测试物理路径是否仍然存在,如果不存在,则删除该应用程序:

# This is for IIS 7, make sure the snap-in is installed first: https://www.iis.net/downloads/microsoft/powershell
Add-PSSnapin WebAdministration

# Get all IIS sites
Get-ChildItem IIS:\Sites | foreach {
    $site = $_;

    # Get all applications without existing physical path
    $applications = Get-ChildItem $site.PsPath | Where-Object { $_.NodeType -eq "application" -and (Test-Path $_.PhysicalPath) -eq $False };

    # List all phantom applications
    $applications | FT

    # Remove applications
    $applications | Remove-WebApplication -Site $site.Name
}

稍作修正:IIS管理器可以通过选择“应用程序池”或“站点”节点并在appPool /站点上选择“查看应用程序”来显示虚拟应用程序。但是,它仅允许从“站点”节点中删除!
罗纳德

尽管我必须在Server 2012 R2上将“ Add-PSSnapIn”更改为“ Import-Module”,但这对我来说效果很好。
拉姆德

1

有一个简单的方法可以解决此问题。

  1. 在应用程序池中选择包含Phantom应用程序的站点。
  2. 在右侧的“操作”菜单上,选择“查看应用程序”。此列表应显示站点中的所有应用程序,无论是否存在Phantom。
  3. 您需要做的就是选择应用程序,然后在右侧的“操作”菜单中选择“删除”。

0

为什么不直接编辑MetaBase.xml?当然,请在此之前进行备份。

或创建一个“临时”池,将所有其他应用移到那里,删除原始池,然后重命名(如果需要)新池。


4
第一个原因:因为它是IIS7,所以需要编辑ApplicationHost.config!但是我同意,我不明白为什么它不只是“首先在另一个应用程序池中对该URL进行排序”?
TristanK 2011年

2
谢谢您的帮助。我首先将URL移到了临时池中,但这确实消除了AppFabric的问题。但是,我仍然无法知道怎样才能去除狡猾的应用程序,你不能删除一个应用程序池,只要它使用它的应用程序,我无法删除的应用程序池的应用程序
上校

0

由于不想手动修改applicationHost.config,因此我将上面列出的两个答案组合在一起。

第1步-创建一个临时应用程序池-我们说“临时”。

第2步-将所有幻像应用程序移至该临时应用程序池。

第3步-使用以上答案之一的Powershell-

Powershell  
PS C:\Windows\system32> import-module WebAdministration
PS C:\Windows\system32> iis:
PS IIS:\> cd .\AppPools
PS IIS:\AppPools> ls
PS IIS:\AppPools> del [name of phantom AppPool]  

瞧!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.