การเอาแอปพลิเคชันแฟนทอมออกจาก Application Pools ใน IIS7


38

ฉันมีแอปพลิเคชันในหนึ่งในแอปพลิเคชันของฉันที่มีเส้นทางเสมือนของ '/Site/login.aspx' ฉันต้องการลบ แต่ไม่มีอยู่ในคอมพิวเตอร์ของฉันอีกต่อไปและมันทำให้ฉันมีปัญหาในการตั้งค่า AppFabric

ฉันเข้าใจว่าคุณสามารถลบแอปพลิเคชันแฟนทอมเหล่านี้ได้โดยสร้างแอปพลิเคชันใหม่ใน IIS แล้วกดปุ่ม Remove นั่นจะกำจัดแอปพลิเคชันออกจากกลุ่ม แต่ในกรณีนี้ฉันไม่สามารถสร้างแอปพลิเคชันใหม่ได้เนื่องจาก /login.aspx ในเส้นทางเสมือน

แนวคิดใดที่ฉันจะลบรายการที่ผิดพลาดนี้ได้?

ขอบคุณ

คำตอบ:


44

เนื่องจากฉันมีปัญหาเดียวกัน กลุ่มแอพพลิเคชั่นที่มีแอพพลิเคชั่นที่ไม่มีอยู่อีกต่อไปฉันได้ทำการวิจัยและในที่สุดก็สามารถแก้ไขปัญหาได้

นี่คือบางขั้นตอน:

  1. ค้นหาและแก้ไขไฟล์กำหนดค่า IIS 7 "applicationHost.config" ด้วยโปรแกรมแก้ไขข้อความ มันควรจะเก็บไว้ใน " C: \ windows \ system32 \ inetsrv \ config " เนื่องจากโฟลเดอร์นั้น "ป้องกัน" อย่างใดฉันมักจะแก้ไขดังต่อไปนี้:
    1. เปิด Windows Explorer
    2. นำทางไปยัง "C: \ windows \ system32 \ inetsrv \ config"
    3. คัดลอกไฟล์ "applicationHost.config"
    4. วางลงในโฟลเดอร์ที่คุณสามารถแก้ไขได้เช่นเดสก์ท็อปของคุณ
    5. เปิดด้วยเครื่องมือแก้ไขที่คุณเลือกและแก้ไข
    6. คัดลอกกลับด้วย Windows Explorer ไปที่ "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
นอกจากนี้ฉันเจอบทความนี้ ฉันไม่ได้ใช้เพราะวิธีการแก้ปัญหาข้างต้นใช้งานได้สำหรับฉันHunting Zombies - วิธีลบแอปพลิเคชันเว็บเด็กกำพร้า iis
Col

1
วิธี Powershell ในลิงค์ในความคิดเห็นของ @ Col ด้านบนเป็นวิธีการแก้ปัญหาที่สะอาดและใช้งานได้ดี
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
นี้จะเอาพูลโปรแกรมประยุกต์ สำหรับการลบแอปพลิเคชัน (phantom) ให้ใช้วิธีการจากบทความที่เชื่อมโยงในserverfault.com/questions/283467/…
bvgheluwe

1

ง่ายกว่านี้มาก:

  1. ดูแอปพลิเคชันที่เก่า X และจดจำเส้นทาง (เก่า) Y
  2. สร้างพา ธ / โฟลเดอร์ (เก่า) Y ด้วย Explorer
  3. รีเฟรชคอนโซลการจัดการ IIS
  4. คุณจะพบโฟลเดอร์ที่เพิ่งสร้างขึ้น Y และแอปพลิเคชั่น X ที่ได้รับมอบหมาย
  5. คลิกขวาที่แอปพลิเคชันเก่า (เก่า) X แล้วเลือก "ลบ"
  6. ลบพา ธ Y ด้วย Explorer
  7. รีเฟรช IIS Management Console อีกครั้ง
  8. เย่

1

แอปพลิเคชันลูกจะไม่ถูกลบโดยอัตโนมัติและ IIS Manager ไม่สามารถแสดงในทรีได้นั่นคือปัญหาของคุณ ...

วิธีที่รวดเร็วและมีประสิทธิภาพคือการใช้สคริปต์ 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 Manager สามารถแสดงแอปพลิเคชันแฟนทอมโดยเลือกโหนด 'แอพพลิเคชั่น' หรือ 'เว็บไซต์' และเลือก 'ดูแอปพลิเคชัน' บนแอพพลิเคชั่น / ไซต์ อนุญาตให้ลบได้จากโหนด 'Sites' เท่านั้น!
Ronald

สิ่งนี้ทำงานได้อย่างสมบูรณ์แบบสำหรับฉันแม้ว่าฉันจะต้องเปลี่ยน "Add-PSSnapIn" เป็น "Import-Module" บน Server 2012 R2
ldam

1

มีวิธีง่าย ๆ ในการแก้ไขปัญหานี้

  1. เลือกไซต์ด้วยแอปพลิเคชั่น Phantom ในกลุ่มแอพพลิเคชั่น
  2. ที่เมนู "การกระทำ" ทางด้านขวาให้เลือก "ดูแอปพลิเคชัน" รายการนี้ควรแสดงแอปพลิเคชันทั้งหมดที่อยู่ในไซต์ Phantom หรือไม่
  3. สิ่งที่คุณต้องทำคือเลือกแอปพลิเคชันและเลือก "ลบ" ในเมนู "การกระทำ" ที่ถูกต้อง

0

ทำไมไม่แก้ไข MetaBase.xml โดยตรง แน่นอนสำรองข้อมูลก่อนหน้านั้น

หรือสร้างกลุ่ม "temp" ย้ายแอพอื่นทั้งหมดที่นั่นลบกลุ่ม orig และเปลี่ยนชื่อกลุ่มใหม่ (ถ้าจำเป็น)


4
เหตุผลแรก: เพราะเป็น IIS7 ดังนั้นต้องมีการแก้ไข ApplicationHost.config! แต่ฉันเห็นด้วยฉันไม่เข้าใจว่าทำไมไม่ใช่ "plonk URL นั้นใน App Pool อื่นก่อน"
TristanK

2
ขอบคุณสำหรับความช่วยเหลือ ฉันย้าย URL ไปไว้ในสระชั่วคราวก่อนและนั่นก็เป็นการลบปัญหาของ AppFabric แต่ผมยังไม่สามารถดูว่าฉันสามารถลบแอปพลิเคหลบในขณะที่คุณไม่สามารถลบสระว่ายน้ำแอปตราบเท่าที่มันมีการใช้งานที่ใช้มันและผมก็ไม่สามารถลบโปรแกรมจากแอพลิเคชัน
Col

0

ฉันได้รวมสองคำตอบไว้ข้างต้นเนื่องจากฉันไม่ต้องการคนจรจัด applicationHost.config ด้วยตนเอง

ขั้นตอนที่ 1 - สร้างกลุ่มแอพชั่วคราว - สมมุติว่า "temp"

ขั้นตอนที่ 2 - ย้ายแอปพลิเคชั่นแฟนทอมทั้งหมดไปยังแอพ temp นี้

ขั้นตอนที่ 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]  

Voila!

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.