Die Definition von "Release Candidate" Principle of Most Astonishment

Frustrierendes Publishing, mit Sicherheit

Published on Monday, November 7, 2016 7:00:00 AM UTC in Tools

Vor einiger Zeit stieß ich auf einen recht krassen Bug in der von mir verwendeten Bibliothek CommonMark.NET, bei dem die Eingabe einzelner Tilden-Symbole (~) zum Absturz des gesamten Prozesses führte (per StackOverflow-Exception). Der Fehler ist ab Version 0.14 behoben, weshalb ich jedem, der noch eine ältere Version benutzt, das Update wärmstens empfehlen würde. Die Situation entbehrte nicht einer gewissen Komik, da die Projektseite unter dem Punkt "Reliability" (seit 2014) explizit aufführt:

The parser uses algorithms that completely avoid recursion so even specifically crafted input documents will not cause exceptions and will be rendered correctly. This is important because a StackOverflowException cannot be caught and will bring down the entire process.

Die StackOverflowException konnte aber reproduzierbar bis zur Version 0.13.4 (Juli 2016) provoziert werden. Nunja :).

Der eigentliche Spaß begann allerdings, als ich die aktualisierte Version der Webanwendung veröffentlichen wollte: die Veröffentlichung schlug mit dem folgenden, nichtssagenden Satz fehl:

Unable to perform the operation. Please contact your server administrator to check authorization and delegation settings.

Genialerweise ließ das Problem die Webanwendung in einem inkonsistenten Zustand zurück: das Hochladen der Datei "App_Offline.html" war erfolgreich, so dass sich die Anwendung nach dem Fehler mit einem lapidaren "Service unavailable" zurückmeldete. Die fieberhafte Fehlersuche begann, zumal ja leider ich selbst der "server administrator" bin und ehrlich gesagt keine Ahnung hatte, was die "autorization and delegation settings" sein sollen und wo sie zu finden sind.

Web Deploy nutzt neben den Accounts, die man explizit für das Deployment einrichtet (vgl. dazu auch meinen Artikel darüber), zwei weitere Benutzerkonten, namentlich WDeployConfigWriter und WDeployAdmin. Ersterer hat Schreibrechte für die applicationHost.config von IIS, um dort Konfigurationseinstellungen manipulieren zu können, letzterer ist durch seine Admin-Rechte geeignet, etwa Recycling der App Pools durchzuführen. Ein paar weitere Details hierzu finden sich in diesem Artikel von 2011.

Wie sich herausstellt, werden diese Konten so eingerichtet, dass sie der üblichen Passwort-Policy unterliegen, wodurch beispielsweise nach der konfigurierten Zeit stillschweigend die Passwörter ablaufen. Im Event Log des Servers findet man dann auch entsprechende Hinweise:

konto-abgelaufen.png

Behebt man das Problem, funktioniert auch der Publish-Prozess sofort wieder. Warum die Konten derart eingerichtet werden, und warum man wieder einmal keine eindeutigen Hinweise oder sprechende Fehlermeldungen erhält, die auf das tatsächliche Problem hinweisen - das bleibt wohl wie immer Microsofts Geheimnis :).

Tags: ASP.NET Core · Hosting · Web Deploy