Xóa các ứng dụng ảo khỏi Nhóm ứng dụng trong IIS7


38

Tôi có một ứng dụng trong một trong các nhóm ứng dụng của mình có đường dẫn ảo '/Site/login.aspx'. Tôi muốn xóa nó nhưng nó không còn tồn tại trên máy tính của tôi và nó gây ra sự cố cho tôi khi thiết lập AppFoven.

Tôi hiểu rằng bạn có thể xóa các ứng dụng ảo này bằng cách tạo lại ứng dụng trong IIS và sau đó nhấn Xóa. Điều đó sẽ loại bỏ ứng dụng khỏi nhóm nhưng trong trường hợp này tôi không thể tạo lại ứng dụng do /login.aspx trong đường dẫn ảo

Bất kỳ ý tưởng làm thế nào tôi loại bỏ mục sai lầm này?

Cảm ơn

Câu trả lời:


44

Vì tôi có cùng một vấn đề; nhóm ứng dụng với các ứng dụng không còn tồn tại nữa, tôi đã thực hiện một số nghiên cứu và cuối cùng đã giải quyết được vấn đề.

Dưới đây là một số bước:

  1. Định vị và chỉnh sửa tệp cấu hình IIS 7 "applicationhost.config" bằng trình chỉnh sửa văn bản. Nó nên được lưu trữ trong " C: \ windows \ system32 \ inetsrv \ config " Vì thư mục bằng cách nào đó được "bảo vệ", tôi thường chỉnh sửa như sau:
    1. Mở Windows Explorer
    2. Điều hướng đến "C: \ windows \ system32 \ inetsrv \ config"
    3. Sao chép tệp "applicationhost.config"
    4. Dán nó vào một thư mục nơi bạn có thể chỉnh sửa nó, ví dụ như Desktop của bạn
    5. Mở nó với trình soạn thảo của bạn choise và chỉnh sửa nó
    6. Sao chép lại bằng Windows Explorer vào "C: \ windows \ system32 \ inetsrv \ config"
  2. Tạo một bản sao lưu của tập tin "applicationhost.config" của bạn!
  3. Tìm kiếm với trình soạn thảo văn bản trong "applicationhost.config" cho các ứng dụng không tồn tại của bạn. Chúng nên được đặt ở đâu đó bên trong một <application ...>nút XML.
  4. Xóa <application ...>(các) nút của tất cả các ứng dụng ảo của bạn.
  5. Lưu tệp và sao chép lại vào "C: \ windows \ system32 \ inetsrv \ config"
  6. Làm mới bảng điều khiển quản lý IIS. Nhóm ứng dụng của bạn bây giờ sẽ không có các ứng dụng ảo mà bạn đã xóa trước đó.
  7. Trên thực tế loại bỏ các ứng dụng bây giờ trống rỗng.

Điều đó làm việc cho tôi, nếu nó không làm việc cho bạn, xin vui lòng gửi bình luận ở đây. Một trợ giúp tốt là bài đăng này trên diễn đàn IIS .


6
Ngoài ra, tôi đã xem qua bài viết này. Tôi đã không sử dụng nó như là giải pháp ở trên có hiệu quả với tôi Săn Zombie - Cách xóa các ứng dụng web mồ côi
Col

1
Cách tiếp cận Powershell trong liên kết trong nhận xét của @ Col ở trên là một giải pháp sạch và nó hoạt động rất tốt.
Recep

4

Điều này có lẽ an toàn và đơn giản hơn so với chỉnh sửa 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
Điều này loại bỏ các nhóm ứng dụng . Để xóa các ứng dụng (ảo), hãy sử dụng cách tiếp cận từ bài viết được liên kết trong serverfault.com/questions/283467/ Lời
bvgheluwe

1

Đơn giản hơn nhiều:

  1. Xem ứng dụng cũ X và ghi nhớ đường dẫn Y (cũ)
  2. Tạo đường dẫn / thư mục Y (cũ) với Explorer
  3. Làm mới bảng điều khiển quản lý IIS
  4. Bạn sẽ tìm thấy thư mục vừa tạo Y và ứng dụng được gán X
  5. Nhấp chuột phải vào ứng dụng X (cũ) và chọn "Xóa"
  6. Xóa đường dẫn Y bằng Explorer
  7. Làm mới lại bảng điều khiển quản lý IIS
  8. tiếng hoan hô

1

Các ứng dụng con không tự động bị xóa và Trình quản lý IIS không thể hiển thị chúng trong cây, vì vậy đó là vấn đề của bạn ...

Cách nhanh chóng và mạnh mẽ là sử dụng tập lệnh PowerShell để nhận tất cả các ứng dụng, kiểm tra xem đường dẫn vật lý có còn tồn tại không và nếu không, hãy xóa ứng dụng:

# 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
}

Chỉ cần sửa một chút: Trình quản lý IIS có thể hiển thị các ứng dụng ảo bằng cách chọn nút 'Nhóm ứng dụng' hoặc 'Trang web' và chọn 'Xem ứng dụng' trên ứng dụngPool / trang web. Nó chỉ cho phép xóa từ nút 'Trang web'!
Ronald

Điều này hoạt động hoàn hảo với tôi, mặc dù tôi đã phải thay đổi "Add-PSSnapIn" thành "Module nhập khẩu" trên Server 2012 R2.
ldam

1

Có một cách dễ dàng để khắc phục điều này.

  1. Chọn trang web có ứng dụng Phantom trong nhóm ứng dụng.
  2. Ở bên phải menu "Hành động", chọn "Xem ứng dụng". Danh sách này sẽ hiển thị tất cả các ứng dụng có trong trang web, Phantom hay không.
  3. Tất cả những gì bạn cần làm là chọn Ứng dụng và chọn "Xóa" trong menu "Hành động" bên phải.

0

Tại sao không chỉnh sửa trực tiếp MetaBase.xml? Tất nhiên, sao lưu nó trước đó.

Hoặc tạo nhóm "tạm thời", di chuyển tất cả các ứng dụng khác đến đó, xóa nhóm gốc và đổi tên (nếu cần) nhóm mới.


4
Lý do đầu tiên: Vì đó là IIS7, vì vậy cần phải chỉnh sửa Applicationhost.config! Nhưng tôi đồng ý, tôi không hiểu tại sao trước tiên không phải là "plonk URL đó trong một nhóm ứng dụng khác"?
TristanK

2
Cảm ơn đã giúp đỡ. Tôi đã chuyển URL vào nhóm tạm thời trước và điều đó sẽ loại bỏ sự cố với AppFoven. Tuy nhiên, tôi vẫn không thể thấy cách tôi có thể xóa ứng dụng tinh ranh vì bạn không thể xóa nhóm ứng dụng miễn là nó có ứng dụng sử dụng và tôi không thể xóa ứng dụng khỏi nhóm ứng dụng
Col

0

Tôi đã thực hiện kết hợp hai câu trả lời được liệt kê ở trên vì tôi không muốn tinker applicationhost.config theo cách thủ công.

Bước 1 - Tạo nhóm ứng dụng tạm thời - giả sử "temp".

Bước 2 - Di chuyển tất cả các ứng dụng ảo sang nhóm ứng dụng tạm thời này.

Bước 3 - Sử dụng Powershell từ một trong những câu trả lời ở trên -

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!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.