webentwicklung-frage-antwort-db.com.de

Beim Bereitstellen einer einfachen ASP.NET Core 2.2-Webanwendung in Azure mithilfe von Web Deploy wird ein Fehler ausgegeben

Ich habe eine asp.net-Kernwebanwendung mit Azure über den Bildschirm Veröffentlichen in Visual Studio 2017 veröffentlicht. Ich habe alle Standardeinstellungen verwendet, aber meine App verwendet Migrationen, sodass ich sie dazu bringen muss, sie im Veröffentlichungsprofil auszuführen.

Wenn ich versuche, auf die Site zuzugreifen, bekomme ich:
Die Seite kann nicht angezeigt werden, da ein interner Serverfehler aufgetreten ist.

Ich habe das Gefühl, dass ich etwas mit der Verbindungszeichenfolge und der Variablen ASPNETCORE_ENVIRONMENT zu tun habe.

Ich habe immer noch die Standardeinstellungen appsettings.json und appsettings.Development.json, die Sie erhalten, wenn Sie eine neue asp.net-Kernweb-App erstellen. Die Datei appsettings.json verweist auf meine lokale Entwicklungs-DB und die Datei appsettings.Development.json auf die Azure-Datenbank vom Veröffentlichungsprofil.

Oder kümmert sich das Veröffentlichungsprofil automatisch um die Verbindungszeichenfolge, und ich muss die oben genannten Schritte nicht ausführen?

8
Blake Rivell

Standardmäßig sind ASP.NET Core 2.2-Apps für die Verwendung des neuen In Process-Hostingmodells konfiguriert. Dies wird auf Azure erst im Dezember 2018 in allen Regionen verfügbar sein. Sie erwähnen es hier .

Die Lösung für jetzt besteht darin, Folgendes in die .csproj-Datei Ihrer Web-App einzufügen:

  <PropertyGroup>
    <AspNetCoreModuleName>AspNetCoreModule</AspNetCoreModuleName>
    <AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
  </PropertyGroup>
19
Blake Rivell

Eine einfache Lösung wäre, den Azure-db-Verbindungsstring anstelle von appsettings.json in appsettings.Development.json zu setzen.

Wenn Sie die standardmäßig generierte asp.net-Kernanwendung in VS2017 ausführen, finden Sie die Datei launchSettings.Json im Ordner Eigenschaften mit den Profilen, die lokal ausgeführt werden. Dort finden Sie unter dem Abschnitt Profile die Einstellung der Eigenschaft ASPNETCORE_ENVIRONMENT zu Entwicklung .

"WebApp": {
  "commandName": "Project",
  "launchBrowser": true,
  "applicationUrl": "http://localhost:5000",
  "environmentVariables": {
    "ASPNETCORE_ENVIRONMENT": "Development"
  }
}

Dies bedeutet, dass, wenn Sie den lokalen Datenbank-Verbindungsstring in Ihrem appsettings.Development.json definieren, dieser Verbindungsstring verwendet wird, wenn er lokal ausgeführt wird.

Wenn Sie die Eigenschaft ASPNETCORE_ENVIRONMENT nicht definieren, verwendet die Laufzeitumgebung nur die Werte von appsettings.json (die Laufzeit setzt ASPNETCORE_ENVIRONMENT auf Production als Standardeinstellung. Wenn Sie jedoch keinen appsettings.Production.json definiert haben, werden nur die Werte in appSettings.json verwendet werden).

Wenn Sie also die Azure-Webanwendung ausführen, müssen Sie ASPNETCORE_ENVIRONMENT überhaupt nicht angeben, wenn Sie den Azure-db-Verbindungsstring in appsettings.json setzen.

1
Marcus Höglund

Sie können Ihre App-Einstellungen und Verbindungszeichenfolgen im Abschnitt Application settings Ihres Dienstes überprüfen und festlegen:

 enter image description here

1
Michael

Ich habe eine AspNet Core 3.0-Website für Azure bereitgestellt und einen HTTP 500-Serverfehler erhalten.

Dies war in der web.config:

<system.webServer>
  <handlers>
    <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
  </handlers>
  <aspNetCore processPath="dotnet" arguments=".\BedtimeWeb.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="InProcess" />
</system.webServer>

Ich habe AspNetCoreModuleV2 zu AspNetCoreModule geändert und dann wurde der Fehler zu HTTP 502.3.

Ich habe dann das hostingModel = "InProcess" Attribut entfernt und die Website hat dann richtig funktioniert.

0
GarDavis