Napotkaliśmy problem w IIS 7.5, w którym mamy prosty system wdrażania, który składa się z następujących elementów:
Utwórz plik zip nowego webroota, składający się z trzech folderów:
Api
Site
Manager
Jest on rozpakowywany do nowego folderu (powiedzmy, że nazywamy go „SITE_REV1”) i zawiera skrypt, który wywołuje następujące (jeden dla każdego katalogu głównego):
C:\Windows\system32\inetsrv\appcmd set vdir "www.site.com/" -physicalPath:"SITE_REV1\Site"
Zwykle działa to 9/10 razy. W niektórych przypadkach webroot wydaje się być poprawnie zaktualizowany (jeśli sprawdzę podstawowe ustawienia w Menedżerze IIS, ścieżka wygląda poprawnie), ale działająca witryna jest w rzeczywistości wskazywana na starą lokalizację. Jedynym sposobem, w jaki udało nam się to „naprawić”, jest uruchomienie resetowania IIS. Nie wystarczy ponownie przetworzyć pulę aplikacji, o której mowa.
Czasami wydaje się nawet konieczne zrestartowanie komputera, ale nie jestem w 100% pewien, że jest dokładny (nie zawsze to ja naprawiałem problem).
Przepisałem skrypt za pomocą Powershell i modułu Web-Administration, mając nadzieję, że w appcmd wystąpiła usterka, ale występuje ten sam problem.
Set-ItemProperty "IIS:\Sites\www.site.com" -Name physicalPath -Value "SITE_REV1\Site"
Czy ktoś doświadczył czegoś takiego? Czy ktoś ma pojęcie o tym, co się dzieje i co mogę zrobić, aby zapobiec temu problemowi? Wykonanie resetu IIS nie jest dla nas dobrą opcją, ponieważ wpłynęłoby to na wszystkie witryny na serwerze za każdym razem, gdy próbujemy wdrożyć zmiany w jednej witrynie.
EDYCJA: Zidentyfikowaliśmy, że uruchomienie / zatrzymanie witryny (NIE puli aplikacji) w Menedżerze IIS rozwiązuje błędną ścieżkę fizyczną, ale jeśli zatrzymam witrynę za pomocą appcmd, zmienię ścieżkę fizyczną, a następnie ją uruchomię, nadal cierpię z powodu te same problemy. Jestem pusta ...
Odpowiedzi:
Czy zmiana ścieżki fizycznej z Menedżera IIS działa poprawnie i natychmiast?
Możesz wypróbować następujące polecenie. Inaczej składnia, powinna mieć ten sam wynik, ale może działa nieco inaczej wewnętrznie, powodując, że IIS wychwytuje zmiany (lepiej):
C:\Windows\System32\inetsrv\appcmd.exe set app "www.site.com/" -[path='/'].physicalPath:"SITE_REV1\Site"
źródło
Recykling puli aplikacji powinien być wystarczający dla poszczególnych witryn. Są to niezależne procesy. Zbyt często artykuły i procesy promują używanie iisreset. Czy zatrzymanie / uruchomienie puli aplikacji dla jednej witryny jest opcją? Czy jest to rozwiązanie z jednym serwerem i czy próbujesz zminimalizować czas przestoju witryny? Istnieje opcja Wyłącz recykling przy zmianach konfiguracji. Następnie możesz ręcznie poddać recyklingowi. Kiedy pojawia się problem, co jest wymienione w pliku applicationHost.config?
źródło