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:
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.
Czy to aplikacja typu konsola/okno lub sama aplikacja IIS? Masz na myśli konkretną stronę lub ogólnie? – Kev
Wykrywanie odbywa się z aplikacji WinForm. –
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. –