IIS7でアプリケーションプールからファントムアプリケーションを削除する


38

'/Site/login.aspx'の仮想パスを持つアプリケーションプールの1つにアプリケーションがあります。削除したいのですが、コンピューターに存在しなくなり、AppFabricのセットアップで問題が発生しています。

IISでアプリケーションを再作成してから[削除]をクリックすると、これらのファントムアプリケーションを削除できることを理解しています。それはプールからアプリケーションを取り除きますが、この場合、仮想パスの/login.aspxのためにアプリケーションを再作成できません

この誤ったエントリを削除する方法はありますか?

ありがとう

回答:


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

4

これはおそらく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]  

1
これにより、アプリケーションプールが削除されます。(ファントム)アプリケーションを除去するためにリンクされた物品からのアプローチを使用serverfault.com/questions/283467/...
bvgheluwe

1

もっと簡単:

  1. 古いアプリケーションXを表示し、(古い)パスYを記憶する
  2. エクスプローラーで(古い)パス/フォルダーYを作成します
  3. IIS管理コンソールを更新する
  4. 作成されたフォルダーYと割り当てられたアプリケーションXが見つかります。
  5. (古い)アプリケーションXを右クリックし、「削除」を選択します
  6. Explorerでパス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」に変更する必要がありましたが、これは完全に機能しました。
ldam

1

これを修正する簡単な方法があります。

  1. アプリケーションプール内のPhantomアプリケーションがあるサイトを選択します。
  2. 右側の[アクション]メニューで[アプリケーションの表示]を選択します。このリストには、サイト内にあるすべてのアプリケーション(Phantomかどうか)が表示されます。
  3. 必要なのは、アプリケーションを選択し、右側の[アクション]メニューで[削除]を選択することだけです。

0

MetaBase.xmlを直接編集してみませんか?もちろん、その前にバックアップしてください。

または、「temp」プールを作成し、他のすべてのアプリをそこに移動し、origプールを削除し、新しいプールの名前を変更します(必要な場合)。


4
最初の理由:IIS7であるため、ApplicationHost.configの編集が必要です!しかし、私は同意します、なぜ「最初にそのURLを別のアプリケーションプールに突っ込む」だけではないのか理解していませんか?
TristanK

2
助けてくれてありがとう。最初にURLを一時プールに移動しましたが、これによりAppFabricの問題が解決されます。しかし、私はまだそれを使用してアプリケーションを持っているとして、あなたがいる限り、アプリケーションプールを削除することはできませんように私は危険なアプリケーションを削除する方法を見ることができない、と私は、アプリケーションプールからアプリケーションを削除することはできません
コル

0

applicationHost.configを手動で変更したくないので、上記の2つの回答を組み合わせました。

ステップ1-一時的なアプリプールを作成します-「temp」としましょう。

ステップ2-すべてのファントムアプリケーションをこの一時アプリケーションプールに移動します。

ステップ3-上記の回答の1つから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]  

出来上がり!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.