2010-12-14 15 views
14

Wyzwaniem jest ustalenie, czy ASP.NET jest włączony wewnątrz IIS7 w rzetelny i poprawny sposób.Jak wykryć, czy ASP.NET jest włączony w IIS 7

Włączanie/wyłączanie odbywa się w tym przypadku wchodzenia:

Server Manager -> 
    Roles -> 
     Web Server (IIS) -> 
      Remove Role Services -> 
       Remove ASP.NET 

naturalnym miejscem, aby określić co powinno być w pliku ApplicationHost.config. Jednak przy włączonej lub wyłączonej ASP.NET nadal mamy dostępny moduł "ManagedEngine", a wciąż mamy rekord filtra isapi w tagu.

Najlepsze, co mogę obecnie znaleźć, to sprawdzenie, czy znacznik isapiCgiRestriction < zawiera plik aspnet_isapi.dll lub czy dostawca śledzenia ASPNET jest dostępny.

Jednak nie wykrywają one bezpośredniej obecności konfiguracji ASP.NET, tylko efekt uboczny, który może być rekonfigurowany przez użytkownika.

Wolę zrobić to, sprawdzając konfigurację/instalację IIS niż sam system operacyjny, jeśli to możliwe, chociaż wyliczenie Ról & Usługi na serwerze mogą być dopuszczalne, jeśli możemy zagwarantować, że ta technika zawsze będzie działać zawsze, gdy IIS7 Jest używane.

Aktualizacja

Dzięki za odpowiedzi. Dokładnie wyjaśniając, co chcę zrobić, pobieram ustawienia z różnych miejsc w konfiguracji serwera do pojedynczego (tylko do odczytu) widoku, aby pokazać, co użytkownik musi skonfigurować, aby umożliwić działanie oprogramowania.

Jednym z ustawieniami muszę przynieść to jest jeden: IIS Config showing ASP.NET not installed

Ten podświetlone na czerwono.

Nie potrzebuję manipulować ustawieniem, wystarczy go odtworzyć. Chcę sprawdzić, czy użytkownik zaznaczył pole ASP.NET po dodaniu roli IIS do serwera, ponieważ w tym przykładzie wyraźnie nie.

Chciałbym to zrobić, patrząc na coś niezawodnego w IIS zamiast wyliczać usługi ról, ponieważ nie chcę dodawać zależności zależnych od platformy na czeku, którego nie potrzebuję. Nie wiem, czy kiedykolwiek będzie można zainstalować IIS7 na serwerze, który nie ma infrastruktury ról/usług, ale wolę się tym nie przejmować. Mam również wiele bibliotek do szorowania wokół IIS.

Jednak mam również problem ze znalezieniem sposobu na wyliczenie ról/usług w ogóle, więc jeśli istnieje rozwiązanie, które wymaga tego, byłoby to z pewnością przydatne i znacznie lepsze niż sprawdzenie skutków ubocznych posiadania dostawca śledzenia ASPNET.

Niestety, jeśli nie zaznaczysz przycisku ASP.NET, nadal możesz pobrać moduł ManagedEngine do pliku applicationHost.config w IIS, więc nie jest to niezawodna kontrola. Możesz także zmapować ASP.NET jako filtr isapi, więc sprawdzenie ich nie wystarczy. Te rzeczy są szczególnie problematyczne w przypadku, gdy ASP.NET został zainstalowany, ale został usunięty.

Wygląda na to, że najlepszym rozwiązaniem byłoby sprawdzenie usług ról. Jednak informacje API na ten temat wyglądają dość rzadko, stąd wołanie o pomoc.

+0

Czy to aplikacja typu konsola/okno lub sama aplikacja IIS? Masz na myśli konkretną stronę lub ogólnie? – Kev

+0

Wykrywanie odbywa się z aplikacji WinForm. –

+0

Detekcja musi być wykonana ogólnie. Zasadniczo, jeśli usługa roli ASP.NET zostanie usunięta, jest to ustawienie dla całego serwera, szukam niezawodnego sposobu na wykrycie tego warunku. –

Odpowiedz

14

absolutnym sposób, aby wiedzieć, jeśli sprawdzeniu, że nie jest ani szukać następujący klucz rejestru:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\InetStp\Components 

Tam powinieneś zobaczyć dwie wartości ustawionych 1, ASPNET i NetFxEnvironment i NetFxExtensibility. Ten klucz rejestru jest kluczem konfiguracji usług IIS, który zawiera wszystkie komponenty włączone w usługach IIS.

+0

To jedyny, doskonały, dzięki! –

0

Chcesz więc łatwy sposób? Uczyń ładnie ładnie.Strona aspx wyświetlana jako HTML z blokiem błędu w div w symbolu zastępczym z napisem "Musisz zainstalować ASP.NET" i zmienić go na zainstalowanym ASP.NET, aby zamiast tego powiedzieć "ASP.NET jest zainstalowany", a następnie po prostu mieć narzędzie uruchamia tę stronę w domyślnej przeglądarce po skopiowaniu jej do katalogu zidentyfikowanego w IIS jako stronę *: 80 (lub utworzenia mapowania katalogów w programie IIS programowo poprzez modyfikację kodu XML, a następnie usunięcie go później)

Może nie być najbardziej elegancki, ale zapewnia, że ​​testy pokazują, jakie funkcje są naprawdę zainstalowane w porównaniu z tym, co znajduje się w pliku XML.


Bo to będzie krzyczeć „zrób to leniwy sposób nieświadomy” Ja cię przypomnieć, że jedynym sposobem, żeby wiedzieć, w javascript, jakie funkcje można użyć jest je przetestować przed staram się je wykorzystać, lub zakładaj, że tam są i obserwuj, jak się wysadza. Chodzi mi o to, że nie ma znaczenia, co jest zgłaszane w pliku, ważne jest to, czego faktycznie można użyć. Tylko dlatego, że C: \ Windows \ Micrsoft.Net \ Framework \ v3.xxxxxxxx istnieje i ma pliki nie oznacza, że ​​dll są zarejestrowane w GAC, prawda?

+0

Nie jestem tym zainteresowany. Naprawdę szukam konkretnego testu "tego komponentu brakuje", zamiast ustawiania kontroli end-to-end, programowo, w tle, bez pytania użytkownika, poprawnego opracowania wszystkich potrzebnych adresów URL itp. Uszkodzonych instalacji to zdecydowanie problem, ale jestem bardziej zainteresowany szukaniem brakujących elementów. Dla moich celów sprawdzanie, czy istnieje folder .net3, jest więcej niż wystarczające. –

+0

Cóż, tak jak powiedziałem, był to leniwy łatwy sposób. Czy próbowałeś zrobić migawkę applicationHost.config przed i po zainstalowaniu ASP.NET na czystym komputerze w maszynie wirtualnej? – jcolebrand

+0

Tak, zrobiłem różnicę między dwoma plikami konfiguracyjnymi, a jedyną rzeczą, która jest niezawodna, są dwa ustawienia wymienione w pytaniu. Zaktualizowałem pytanie, podając bardziej szczegółowe informacje. –

2

Ustalenie, czy asp.net jest nawet zainstalowaną funkcją (warunkiem koniecznym do uruchomienia), można wykonać za pomocą PowerShell, co oznacza, że ​​istnieje api .net, jeśli wystarczająco mocno kopie. Metody PowerShell:

Import-Module servermanager 
Get-WindowsFeature web-asp-net 

Która zwróci obiekt typu Microsoft.Windows.ServerManager.Commands.Feature. Właściwość installed jest wartością logiczną i wskazuje, czy ta funkcja jest zainstalowana.

+0

czy ktoś wie, jak to odzwierciedlić, czy też jest gotowy do refleksji? Wygląda na to, że pójście do SF było dobrym pomysłem. – jcolebrand

Powiązane problemy