Answers:
由于我有同样的问题;应用程序池中不再存在应用程序,我进行了一些研究,最终设法解决了这个问题。
以下是一些步骤:
<application ...>
XML节点内的某个位置。<application ...>
所有幻像应用程序的节点。这对我有用,如果对您不起作用,请在此处发表评论。一个很好的帮助是IIS论坛上的这篇文章。
这可能比编辑applicationHost.config更安全,更简单。
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]
简单得多:
子应用程序不会自动删除,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
}
为什么不直接编辑MetaBase.xml?当然,请在此之前进行备份。
或创建一个“临时”池,将所有其他应用移到那里,删除原始池,然后重命名(如果需要)新池。
由于不想手动修改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]
瞧!