web-dev-qa-db-ja.com

IIS7のアプリケーションプールからのファントムアプリケーションの削除

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

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

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

ありがとう

39
Col

同じ問題があったので;もう存在しないアプリケーションを含むアプリケーションプール、私はいくつかの調査を行い、最終的に問題を解決することができました。

ここにいくつかのステップがあります:

  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フォーラム)へのこの投稿 でした。

44
Uwe Keim

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

子アプリケーションは自動的に削除されず、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
}
2
Ronald

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

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

はるかに簡単:

  1. 古いアプリケーションXを表示し、(古い)パスYを覚えている
  2. エクスプローラーで(古い)パス/フォルダーYを作成する
  3. 更新IIS管理コンソール
  4. 作成されたばかりのフォルダYと割り当てられたアプリケーションXが見つかります
  5. (古い)アプリケーションXを右クリックして[削除]を選択します
  6. エクスプローラーでパスYを削除
  7. 更新IIS管理コンソールを再度
  8. ばんざーい
1
Mathias Sch.

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]  

出来上がり!

0
nixish

MetaBase.xmlを直接編集しないのはなぜですか?もちろん、その前にバックアップしてください。

または、「一時」プールを作成し、他のすべてのアプリをそこに移動し、元のプールを削除して、(必要に応じて)新しいプールの名前を変更します。

0
Sunny