Bezpośrednia edycja pliku konfiguracyjnego applicationHost.config IIS 7

38

Wiem, że IIS 7+ używa teraz plików konfiguracyjnych XML zamiast metabazy. Wiem również, że jeśli edytuję plik web.config dla danej witryny, IIS automatycznie wykrywa zmiany i implementuje wszelkie odpowiednie zmiany konfiguracji.

Czy jednak dotyczy to również pliku ustawień applicationHost.config na poziomie serwera? (Zwykle znajduje się w C: \ windows \ system32 \ inetsrv \ config.) W szczególności, czy bezpiecznie jest ostrożnie edytować ten plik zamiast używać Menedżera usług IIS lub narzędzia wiersza polecenia appcmd? Nie mogłem znaleźć w dokumentacji niczego, co powiedziałoby, że jest to w porządku lub nie jest w porządku, aby to zrobić.

Jestem ciekawy, ponieważ muszę zmienić powiązania dla wielu witryn z jednego adresu IP na inny. O wiele szybciej byłoby po prostu przeprowadzić globalne wyszukiwanie i zastąpić adres IP w pliku konfiguracyjnym zamiast ręcznie edytować kilkadziesiąt witryn w GUI.

lunadesign
źródło

Odpowiedzi:

51

Sprawdź również tę odpowiedź tutaj: Nie można ręcznie edytować applicationhost.config

Odpowiedź jest prosta, jeśli nie taka oczywista: win2008 jest 64-bitowy, notatnik ++ to 32-bitowy. Podczas nawigowania do Windows \ System32 \ inetsrv \ config za pomocą Eksploratora używasz 64-bitowego programu do znalezienia pliku. Po otwarciu pliku za pomocą notatnika ++ próbujesz go otworzyć za pomocą programu 32-bitowego. Pomyłka występuje, ponieważ zamiast powiedzieć, że to właśnie robisz, system Windows pozwala na otwarcie pliku, ale po zapisaniu ścieżka pliku jest przezroczyście odwzorowana na Windows \ SysWOW64 \ inetsrv \ Config.

Tak więc w praktyce zdarza się, że otwierasz applicationhost.config za pomocą notatnika ++, dokonaj zmiany, zapisz plik; ale zamiast nadpisywać oryginał zapisujesz jego 32-bitową kopię w Windows \ SysWOW64 \ inetsrv \ Config, dlatego nie wprowadzasz zmian w wersji, która jest faktycznie używana przez IIS. Jeśli przejdziesz do Windows \ SysWOW64 \ inetsrv \ Config, znajdziesz właśnie zapisany plik.

Jak obejść ten problem? Prosty - użyj 64-bitowego edytora tekstu, takiego jak zwykły notatnik dostarczany z systemem Windows.

Markive
źródło
7
Uratowałem mój bekon tym ... co za dziwny problem, który sprawił, że pomyślałem, że oszaleję. Dzięki!
brettwgreen 15.04.15
Nie wydaje się to już problemem w systemie Windows 10, więc było strasznie zagmatwane, gdy działo się to na naszych komputerach z systemem Windows 7 i Windows Server 2012.
Dzyann
Dzięki, @Markive. Na pierwszy rzut oka jest to bardzo mylące.
Moby's Stunt Double
9

W szczególności, czy bezpiecznie jest ostrożnie edytować ten plik zamiast używać Menedżera usług IIS lub narzędzia wiersza polecenia appcmd?

Tak! Możesz edytować plik applicationhost.config bezpośrednio, jeśli jesteś administratorem na komputerze; to wszystko, co robią także narzędzia administracyjne.

W razie problemów domyślnie przechowywane są co najmniej 20 minut kopii zapasowych konfiguracji w folderze \ inetpub \ history .

TristanK
źródło
Dzięki! Nie wiem, dlaczego nie dokumentują tego więcej.
lunadesign
3

Ładne wprowadzenie do pliku applicationHost.config znajdziesz bezpośrednio w IIS.NET . Istnieje również dokładne odniesienie do wszystkich elementów w schemacie konfiguracji IIS.

Właściwie jest to całkiem dobrze udokumentowane :-)

Mathias R. Jessen
źródło
0

Kolejna przydatna informacja: podczas ręcznej edycji pliku applicationHost.config (podobnie jak narzędzia), tylko aplikacje, dla których zmieniłeś konfigurację, będą przetwarzane. Usługi IIS faktycznie wykonują migawkę konfiguracji dla każdej aplikacji i nie aktualizują jej, dopóki coś się nie zmieni dla tej aplikacji.

Piotr
źródło
Według stackoverflow.com/questions/8635884/... i komentarzy wymagany jest pełny restart.
yoel halb