Debuggen mit HTTPS in IIS Express Umzug zum eigenen Server

Wie man einen Server für ASP.NET Core einrichtet

Published on Monday, September 19, 2016 4:00:00 AM UTC in Programming & Tools

Passend zum letzten Post folgt hier die Liste der Einzelschritte, die ich typischerweise zum Einrichten eines "frischen" (Windows-)Servers für ASP.NET Core ausführe. Insbesondere die Einrichtung von Web Deploy und der Möglichkeit, per Publish Profile neue Versionen zu veröffentlichen, ist nicht besonders gut dokumentiert. Während die offizielle Doku fürs Einrichten des Hostings noch die ein oder anderen Vorgehensweisen und Tipps bereitstellt, heißt es zum Publishing lediglich lapidar, man solle doch das vom Hoster bereitgestellte Profil importieren... hallo? Ich bin der Hoster! Was muss ich tun?

Aber der Reihe nach. Auf dem vorbereiteten Server (Betriebssystem eingerichtet und up-to-date) sind erstmal folgende Schritte nötig:

  1. .NET Core installieren, und zwar in der Variante "Windows (Server Hosting)".
  2. Die Data Protection-Features von ASP.NET Core einrichten. Ist zwar nicht zwingend erforderlich, aber sehr zu empfehlen. Das passende PowerShell-Skript gibt es auf GitHub.
  3. Im IIS-Manager einen neuen App Pool anlegen, der als "unmanaged" konfiguriert wird.
  4. Im Dateisystem ein Fleckchen für die zu hostende App einrichten und passende Rechte für die App Pool-Identity vergeben.
  5. Eine neue Webseite anlegen, oder die "Default Web Site" auf den neuen App Pool und den physikalischen Ordner konfigurieren.
  6. IIS reset :]

Damit sollten eine .NET Core-Anwendung bereits laufen können.

Für das Remote Publishing mit Web Deploy kann die Einrichtung etwas kniffliger werden; zumindest passiert es mir bei gefühlt jedem zweiten Versuch, dass die Installation irgendwie schiefgeht. Meist ist nach scheinbar erfolgreicher Installation keine Integration in den IIS-Manager vorhanden oder der entsprechende Windows-Dienst nicht installiert. Bisher konnte ich noch nicht rausfinden, was dies verursacht und wie man es umgeht. Theoretisch sieht es aber so aus, dass man per Web Platform Installer das Paket "Web Deploy 3.6 for Hosting Services" installiert. Der Zusatz "Hosting Services" ist wichtig, unbedingt darauf achten. Danach kontrolliert man, dass der Windows Dienst "Webbereitstellungs-Agent-Dienst" installiert und gestartet wurde. Nach einem Neustart des IIS Managers sollte dort im Kontext-Menü von Webseiten der Eintrag "Bereitstellen" auftauchen. Fehlen Windows-Dienst und/oder Kontext-Menü-Eintrag, geht die Fehlersuche los. Ich empfinde es meist als einfacher, Web Deploy nochmals zu deinstallieren und neu zu installieren. Da die Pre-Requisites, die der WPI automatisch mitinstalliert, nach der ersten Installation da sind, kann die Installation von Web Deploy im zweiten Anlauf auch per MSI-Paket gemacht werden.

Dann kann's losgehen :)

  1. Man legt einen Betriebssystem-Account mit eingeschränkten Rechten an, der fürs Deployment dient.
  2. Diesen Account trägt man für die Webseite im IIS Manager unter "Verwaltung/IIS Manager-Berechtigungen" ein.
  3. Im Kontext-Menü "Bereitstellen" der Webseite wählt man den Punkt "Web Deploy-Veröffentlichung aktivieren..." und richtet die Funktion mit dem angelegten User-Account ein.

web-deploy-context-menu.png

Das generierte Publish-File (pubxml) kann man dann wie in der Anleitung auf der ASP.NET-Seite beschrieben installieren und damit fortfahren.

Für gewöhnlich schlägt mit der Standard-Einrichtung das Publishing aus Visual Studio heraus wegen des verwendeten Zertifikats fehl. Gegebenenfalls muss man dieses ("wmsvc") also noch bei sich lokal installieren, oder aber in der pubxml-Datei händisch "untrusted certificates" erlauben, indem man dort einen entsprechenden Eintrag hinzufügt: <AllowUntrustedCertificate>True</AllowUntrustedCertificate>

Viel Erfolg! ;)

Tags: ASP.NET Core · Hosting · Web Deploy