In IIS 7.5 ist ein Problem aufgetreten, bei dem wir ein einfaches Bereitstellungssystem haben, das Folgendes umfasst:
Erstellen Sie eine Zip-Datei mit neuer Webroot, die aus drei Ordnern besteht:
Api
Site
Manager
Dies wird in einen neuen Ordner entpackt (sagen wir, wir nennen ihn "SITE_REV1") und enthält ein Skript, das Folgendes aufruft (eines für jede Webroot):
C:\Windows\system32\inetsrv\appcmd set vdir "www.site.com/" -physicalPath:"SITE_REV1\Site"
Dies funktioniert normalerweise 9/10 Mal. In einigen Fällen scheint die Webroot korrekt aktualisiert zu sein (wenn ich die Grundeinstellungen in IIS Manager überprüfe, sieht der Pfad korrekt aus), aber die betreffende laufende Site zeigt tatsächlich auf den alten Speicherort. Die einzige Möglichkeit, dies zu beheben, besteht darin, einen IIS-Reset auszuführen. Es reicht nicht aus, den betreffenden Anwendungspool zu recyceln.
Manchmal scheint es sogar notwendig zu sein, einen Neustart durchzuführen, aber ich bin nicht 100% sicher, dass dies korrekt ist (es war nicht immer ich selbst, der das Problem behoben hat).
Ich habe das Skript mit Powershell und dem Webadministrationsmodul neu geschrieben, in der Hoffnung, dass es einen Fehler in appcmd gibt, aber das gleiche Problem tritt auf.
Set-ItemProperty "IIS:\Sites\www.site.com" -Name physicalPath -Value "SITE_REV1\Site"
Hat jemand so etwas erlebt? Hat jemand eine Ahnung, was los ist und was ich versuchen kann, um dieses Problem zu verhindern? Ein IIS-Reset ist für uns keine gute Option, da dies alle Sites auf dem Server jedes Mal betrifft, wenn wir versuchen, Änderungen an einer einzelnen Site bereitzustellen.
BEARBEITEN: Wir haben festgestellt, dass ein Start / Stopp der Site (NICHT des Anwendungspools) in IIS Manager den fehlerhaften physischen Pfad behebt. Wenn ich die Site jedoch mit appcmd stoppe, den physischen Pfad ändere und dann starte, leide ich immer noch darunter die gleichen Probleme. Ich bin leer ...
Antworten:
Funktioniert das Ändern des physischen Pfads von IIS Manager korrekt und sofort?
Möglicherweise möchten Sie den folgenden Befehl ausprobieren. Anders Syntax, sollte das gleiche Ergebnis haben, aber vielleicht funktioniert es intern etwas anders, was dazu führt, dass IIS die Änderungen aufnimmt (besser):
C:\Windows\System32\inetsrv\appcmd.exe set app "www.site.com/" -[path='/'].physicalPath:"SITE_REV1\Site"
quelle
Ein App-Pool-Recycling sollte pro Site-Basis ausreichend sein. Dies sind unabhängige Prozesse. Zu oft fördern Artikel und Prozesse die Verwendung von iisreset. Ist das Stoppen / Starten des App-Pools für die eine Site eine Option? Handelt es sich um eine Einzelserverlösung, und versuchen Sie, Ausfallzeiten für die Site zu minimieren? Es gibt eine Option zum Deaktivieren des Recyclings bei Konfigurationsänderungen. Dann können Sie manuell recyceln. Was ist in der applicationHost.config aufgeführt, wenn das Problem auftritt?
quelle