Probleme bei der Bereitstellung der ASP.NET 5 (ASP.NET Core) -App für Azure

8

Ich habe eine App auf ASP.NET 5 (CoreCLR) und versuche, sie in Microsoft Azure zu veröffentlichen. Ich benutze free Web App (nicht VDS)

Ich veröffentliche App mit Visual Studio 2015 Publish->Microsoft Azure und folgende diese Anweisungen .

Aber wenn ich es veröffentliche und versuche, es zu öffnen, sehe ich nur das ununterbrochene Laden einer leeren Seite. Ich aktiviere die Protokollierung und zeige das Protokoll (stdout.log) von Azure an und es gab nur:

%Vor%

ausführbares Programm oder Batch-Datei.

Ich habe auch versucht, Continiusly publishing mit git zu machen. Während des Push-Vorgangs hat es mit dem Wiederherstellen von Paketen begonnen und ist mit dem Fehler no disk space available fehlgeschlagen.

Gibt es eine Möglichkeit, die ASP.NET 5 App in der Azure Web App zu veröffentlichen?

    
Alexey Markov 19.02.2016, 22:24
quelle

3 Antworten

4

Kurze Antwort

  

Aber wenn ich es veröffentliche und versuche, es zu öffnen, sehe ich nur das ununterbrochene Laden einer leeren Seite.

Dies passiert, wenn unsere App die Laufzeitumgebung ( dnx.exe ) nicht mit der Anwendung veröffentlichen kann.

Diskussion

Es gibt mehrere Möglichkeiten, ASP.NET Core rc1-Apps in einer Azure-Webanwendung zu veröffentlichen. Dazu gehören die kontinuierliche Bereitstellung mit Git und die Veröffentlichung mit Visual Studio. Veröffentlichen Sie den Inhalt Ihres Repositorys für spezifische Hilfe.

Das Beispiel ist eine ASP.NET Core rc1-App, die über die kontinuierliche GitHub-Bereitstellung in einer Azure-Webanwendung bereitgestellt wird. Dies sind die wichtigen Dateien.

%Vor%

app / wwwroot / web.config

Fügen Sie HttpPlatformHandler hinzu. Konfigurieren Sie es so, dass alle Anforderungen an einen DNX-Prozess weitergeleitet werden. Sagen Sie der Azure Web App, dass sie DNX verwenden soll.

%Vor%

app / project.json

Fügen Sie eine Abhängigkeit zum Kestrel-Server hinzu. Setzen Sie einen web -Befehl, der Kestrel startet. Verwenden Sie dnx451 als Zielframework. Siehe unten für die zusätzliche Arbeit, um dnxCore50 zu targetieren.

%Vor%

app / Startup.cs

Fügen Sie die Methode Configure hinzu. Dieser fügt einen extrem einfachen Antworthandler hinzu.

%Vor%

.deployment (optional)

Wenn sich Ihre App nicht im Stammverzeichnis der Repositorys befindet, teilen Sie der Azure Web App mit, welches Verzeichnis die App enthält.

%Vor%

global.json (optional)

Wenn Sie .NET Core als Ziel verwenden möchten, teilen Sie Azure mit, dass wir das Ziel erreichen möchten. Nach dem Hinzufügen dieser Datei können wir entweder den Eintrag dnx451 in unserer project.json mit dnxCore50 ersetzen oder ergänzen.

%Vor%     
Shaun Luttin 21.02.2016 19:43
quelle
3

Erstens, ja, Sie können problemlos ASP.Net 5-Kern-Apps auf Azure ausführen, aber es gibt einige Fehler.

Ich weiß nicht, warum es nicht funktioniert, wenn Sie aus Visual Studio selbst veröffentlichen (warum gibt er eine Antwort auf, von der ich höre, dass Sie fragen ...), aber hier sind einige Dinge einen Blick darauf werfen;

  • Versuchen Sie, in IIS lokal (statt Turmfalke) zu laufen - nur um zu sehen, ob es ein Problem gibt. Zum Beispiel benötigen Sie eine Web.config mit einigen Einstellungen oder Sie benötigen die app.UseIISPlatformHandler in startup.cs.
  • Sehen Sie sich Ihre global.json -Datei an. Es sollte nicht wichtig sein, wenn Sie aus Visual Studio veröffentlichen, aber es wird nicht schaden, dies richtig einzustellen. Sie können so etwas tun:

.

%Vor%

In Bezug auf Continuous Publishing - das ist ein bekanntes Problem mit kostenlosen und freigegebenen Websites und einem, das mich ein paar Stunden gekostet hat. Im Grunde, wenn Sie nach diesem Mechanismus bereitstellen und Sie corecelr angeben, wird die gesamte Laufzeit von Nuget neu installiert und das dauert fast 1 GB (die Erlaubnis für freie und freigegebene Sites). Fügen Sie ein paar NPM-Pakete hinzu und Sie sind über dem Limit und, hey presto, können Sie nicht bereitstellen. @shanselman hat kürzlich in einem seiner Podcasts darüber gesprochen. Es sind nicht die Laufzeit-Binärdateien, die den gesamten Speicherplatz beanspruchen, sondern weil wir im Build-Modus sind, werden auch alle Dokumentations-XML-Dateien installiert, da Nuget nicht weiß, dass Sie sich nicht in einer Entwicklungsumgebung befinden, und sie sind riesig. Im Augenblick ist die einfachste Antwort, wenn Sie fortlaufendes Publishing auf einer freien oder freigegebenen Site verwenden möchten, auch die vollständige Laufzeit in Ihre project.json aufzunehmen und Ihre% co_de festzulegen %, um die vollständige CLR anstelle von corclr zu verwenden. Einfach sehr frustrierend.

    
Frans 21.02.2016 19:46
quelle
0

Ich hatte das gleiche Problem. Diese Antwort hat das Problem behoben.

Beim Erstellen eines neuen Projekts mit der Kernvorlage von ASP.net war die Datei global.json Teil meines API-Projekts, wurde aber auch im Ordner Solution Items referenziert. Bei der Veröffentlichung in einer Azure-API-App wurden zwei global.json -Dateien bereitgestellt:

  1. In /approot/global.json
  2. In /approot/src/MyAPI/global.json

Ich habe die Datei global.json aus dem Projektordner in den Stammordner der Lösung verschoben und eine Referenz wieder in den Ordner Solution Items eingefügt.

Bei der Bereitstellung wurde nur die Datei /approot/global.json bereitgestellt, um das Problem zu beheben.

    
Brett Postin 25.04.2016 13:15
quelle