Nicht-Azure-Bereitstellung durch VS 2015 RC

8

Ich probiere ASP.NET 5 und alle seine neuen Funktionen auf VS 2015 Enterprise RC aus. Um eine reibungslose End-to-End-Bereitstellung zu gewährleisten, versuche ich dann, die Anwendung über die VS Publish-Funktion auf einem privaten Nicht-Azure-Server bereitzustellen.

Ich verpasse jedoch ein sehr wichtiges Feature: die Möglichkeit, auf einem Nicht-Azure-Server zu veröffentlichen.

In früheren Versionen von Visual Studio (ich verwende VS 2013) sind die benutzerdefinierten Optionen vorhanden.

Ich habe versucht, an den Projekteigenschaften zu basteln, aber nichts darüber, wie ich meine ASP.NET 5-Anwendung auf einem benutzerdefinierten Server bereitstellen kann. Irgendwelche Ideen?

    
Nicholas Lie 22.04.2015, 03:47
quelle

1 Antwort

8

Es ist machbar (schließlich verwendet das Veröffentlichen auf Azure-Websites intern auch WebDeploy), aber es ist im Moment ziemlich schwierig und erfordert, dass Sie einige Dinge optimieren. Hier ist, was Sie tun können (für VS 2015 CTP6):

Vorbereitung

Asp.net vnext hat eine etwas andere Verzeichnisstruktur als eine normale Asp.net App. Es gibt zwei Hauptverzeichnisse: approot und wwwroot (wenn Sie die Anwendung auf lokales Dateisystem bereitstellen, können Sie sie durchsuchen). Wir möchten diese beiden Verzeichnisse bereitstellen, aber der IIS-Websitepfad muss auf wwwroot dir verweisen. Dieses Problem scheint in Web Deploy 3.6 , aber ich werde nur manuell damit umgehen. Damit dies funktioniert, können Sie zwei Websites / Anwendungen in IIS erstellen:

  • eine, die auf das root-Anwendungsverzeichnis verweist und nur für die Bereitstellung verwendet wird. Ich werde es mysite-deploy nennen.
  • eine, die verwendet wird, um unsere Website tatsächlich zu hosten, und auf wwwroot dir verweist. Ich werde es einfach mysite nennen.

Bereitstellung

  1. Gehe zu YourprojectDir\Properties\PublishProfiles
  2. Erstellen Sie eine leere pubxml-Datei (d. h. mysite.pubxml )

Fügen Sie den folgenden Inhalt in Ihre pubxml ein:

%Vor%
  1. Wenn Sie in Visual Studio auf "Veröffentlichen" drücken, sollten Sie dieses neue Profil in der Liste sehen.
  2. Füllen Sie die Registerkarte "Verbindung" aus, wie Sie es normalerweise tun würden (setzen Sie Server, Site Name, etc.). Denken Sie daran, den Websitenamen auf die Bereitstellungssite ( mysite-deploy ) zu setzen.
  3. Verbindung validieren
  4. Probieren Sie die Vorschau-Registerkarte - es würde höchstwahrscheinlich nicht funktionieren, aber falls es passiert - Sie sind fertig.
  5. Klicken Sie auf Veröffentlichen
  6. Überprüfen Sie den Fortschritt im Fenster Web Publish Activity .

Mögliche Fehler

Out-of-the-Box wird die Veröffentlichung wahrscheinlich fehlschlagen. Jetzt wird es schwierig:)

ERROR_FAILED_TO_DESERIALIZE

Zuerst habe ich diesen Fehler:

%Vor%

Versuchen wir das zu beheben.

Öffnen Sie das Fenster Publish erneut und prüfen Sie die Option Publish using Powershell script auf der Registerkarte Settings . Versuch es noch einmal.

ERROR_CERTIFICATE_VALIDATION_FAILED

Wenn Sie einen Fehler erhalten: ERROR_CERTIFICATE_VALIDATION_FAILED , bedeutet dies, dass das SSL-Zertifikat IIS Management Service auf Ihrem Zielcomputer von Ihrem Computer nicht als vertrauenswürdig eingestuft wird. Sie können versuchen, das Zertifikat herunterzuladen, es dem vertrauenswürdigen Zertifikatspeicher hinzuzufügen, oder Sie können die Zertifikatsprüfung vollständig deaktivieren.

Im letzteren Fall müssen Sie publish-module.psm1 unter C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\Web Tools\Publish\Scripts.0.0-pre\publish-module.psm1 bearbeiten. Finde das Fragment:

%Vor%

Und füge folgendes hinzu:

%Vor%

ERROR_COULD_NOT_CONNECT_TO_REMOTESVC

Überprüfen Sie die genaue Befehlszeile, die aufgerufen wird - in Web Publish Activity Window sollte eine Zeile protokolliert werden, beginnend mit Calling msdeploy with the command: . Suchen Sie nach ComputerName= . Wenn es so aussieht: ComputerName='https://https://myhost:8172/msdeploy.axd' / msdeploy.axd ' , then you should change Server field in Publish profile Verbindung tab to: myhost: 8172 . That's because the powershell script automatically adds https: //%Co_de%/msdeploy.axd'.

ERROR_PROVIDER_NOT_FOUND

%Vor%

Gehe wieder zu and und finde die Zeile:

%Vor%

Dies scheint ein Feature von Web Deploy 3.6 zu sein , aber es scheint, dass die Server-Seite es auch unterstützen muss. Um es zu deaktivieren, einfach diese Zeile auskommentieren. Warnung: Diese Änderung kann Auswirkungen auf die Powershell-Bereitstellung auf Azure-Websites haben .

Nur der Inhalt des wwwroot-Verzeichnisses wird bereitgestellt

Jetzt, da Ihre Site bereitgestellt wird, gibt es noch eine weitere Sache. Wir wollten das Verzeichnis C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\Web Tools\Publish\Scripts.0.0-pre\publish-module.psm1 und approot bereitstellen, und stattdessen wird nur der Inhalt des Verzeichnisses wwwroot bereitgestellt. Um das zu beheben, müssen wir noch einmal wwwroot bearbeiten.

Suchen Sie die Zeile, die besagt:

%Vor%

Und danach fügen Sie eine neue Zeile hinzu:

%Vor%

Damit wird der veröffentlichte Ordner zum übergeordneten Element von C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\Web Tools\Publish\Scripts.0.0-pre\publish-module.psm1 , was genau das ist, was wir brauchen. Bevor Sie die Veröffentlichung erneut starten, sollten Sie das Verzeichnis Ihrer Site auf dem Server löschen. Die veröffentlichte Verzeichnisstruktur wird jetzt anders aussehen.

Testen

Zu diesem Zeitpunkt sollte die Site bereitgestellt und auf dem Server verfügbar sein. Auf der Serverseite sollten Sie zwei Verzeichnisse sehen: wwwroot und approot und vielleicht einige Skriptdateien.

Alle serverseitigen Fehler müssen Sie selbst debuggen.

    
qbik 22.04.2015, 07:57
quelle