it-swarm.com.de

ASP.NET Core-Hosting - 500 interner Serverfehler

Ich versuche, als ASP.NET Core-Projekt bei einem Hosting-Provider zu veröffentlichen, der ASP.NET Core unterstützt. Ich erhalte 500 interne Serverfehler, von denen ich glaube, dass sie sehr häufig sind. Also durchsuchte ich das Internet und verschiedene Foren und überprüfte dann den processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" in web.config und sie scheinen korrekt mit processPath="dotnet" and arguemnts=".\MyApplication.dll" konvertiert zu sein.

Ich habe auch den connectionString überprüft und zeigt auf den funktionierenden Produktions-DB-Server. Ich habe die DB-Verbindung bestätigt, indem ich connectionString in Produktions-DB geändert und das Projekt in local ausgeführt habe. Es funktioniert und ich bekomme den Zugriff auf die Produktions-DB.

Ich habe auch versucht, die Fehlerinformationen mithilfe der folgenden Informationen in meiner Startup.cs zu erhalten (unabhängig von env):

app.UseDeveloperExceptionPage();
app.UseDatabaseErrorPage();
app.UseBrowserLink();

Ich habe auch stdoutLog in web.config als aktiviert, sehe aber auch diesen Ordner nicht:

stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout"

Ich habe auch versucht, applicationUrl und launchUrl in launchSettings.json in meine prod-URL zu ändern, aber das hat nicht so gut funktioniert.

Daher weigert sich der 500 Internal Server Error, zu verschwinden, und ich habe immer noch keine nützliche Fehlermeldung. Die Seite sagt nur:

Oops . 500 Interner Serverfehler Beim Starten der Anwendung ist ein Fehler aufgetreten.

Ich würde mich sehr freuen, wenn mir hier jemand helfen könnte.

10
user6542823

Ich habe auch stdoutLog in web.config als aktiviert, sehe aber auch diesen Ordner nicht:

stdoutLogEnabled = "true" stdoutLogFile = ".\logs\stdout"

Es gibt hier einen Trick - Sie müssen die beiden Ordner logs und stdout manuell erstellen - dann und nur dann IIS erstellt eine Protokolldatei im logs-Ordner (nicht stdout wie erwartet) - fragen Sie mich nicht warum, denn ich weiß nicht warum;)


Hoppla. 500 Internal Server Error Beim Starten der Anwendung ist ein Fehler aufgetreten.

In der Regel bedeutet dies Probleme mit einer Konfiguration in Startup.cs. Zu den häufigsten Problemen gehören ein Problem mit der Datenbank selbst, ein Problem mit Migrationen (wenn Sie den Code First-Ansatz verwenden), Probleme mit appsettings.js, Probleme mit den Anmeldeinformationen von Social Logins (wie SecretKey fehlt) ...

Bitte beziehen Sie sich auf die Protokolldatei in .\logs\stdout - dies ist der schnellste Weg, um Details zum Problem zu finden :)


app.UseDeveloperExceptionPage ();

app.UseDatabaseErrorPage ();

Diese funktionieren nach dem vollständigen Start Ihrer WebApp, nicht jedoch beim Starten der Anwendung.

22
Lukasz Makowej

Danke an Lukasz für seine Kommentare. Ich konnte das Protokoll sehen und sagte, dass "ClientId-Option angegeben werden muss". Das Problem lag bei den UserSecrets. Da secrets.json nur in der Entwicklung verfügbar ist, wurden in der Produktion keine Geheimnisse gefunden. Sobald ich die Geheimnisse in meiner appSettings.json hatte, funktionierte es gut.

Um dies in der lokalen Umgebung zu replizieren, rufen Sie einfach die Projekteigenschaften auf, ändern Sie die Umgebungsvariable ASPNETCORE_ENVIRONMENT in 'Production' und führen Sie sie in der lokalen Umgebung aus. Dadurch wird der Fehler 500 Internal Server Error in local repliziert, und Sie erhalten die Fehlermeldung.

4
user6542823

Ich möchte @Lukasz Makowej antworten.

Ich habe herausgefunden, warum der Ordner erstellt werden muss. In der Microsoft-Dokumentation heißt es:

stdoutLogFile - optionales Zeichenfolgenattribut.

"..... Alle im Pfad angegebenen Ordner müssen vorhanden sein, damit das Modul die Protokolldatei erstellen kann ..."

Sie müssen es also selbst erstellen:) Überprüfen Sie es hier:

https://docs.Microsoft.com/en-us/aspnet/core/Host-and-deploy/aspnet-core-module?view=aspnetcore-2.0

Ich muss auch sagen, dass ich in meinem Fall überprüfen musste, dass die Website über die Zugriffsrechte für den "Log" -Ordner verfügte.

2
RodrigoCampos

Stellen Sie außerdem sicher, dass das ASP.NET Core Windows Server Hosting-Paket installiert ist. Dadurch wird ein Reverse-Proxy zwischen IIS und dem Kestral-Server erstellt.

Mehr Info:

https://docs.Microsoft.com/en-us/aspnet/core/publishing/iis?tabs=aspnetcore2x#tabpanel_tfsY37MhAQ_aspnetcore2x

1
dalemac

Stellen Sie sicher, dass Ihre web.config gut ist. Ich wurde mehr als einmal von einer syntaktisch guten web.config gestampft, die sich auf ein Modul (Rewrite) bezog, das sich nicht auf dem Server befand. Keine Fehlermeldungen außer dem 500-Antwortfehler. 

1
Tommy Hansen

in der Datei web.config ändern Sie modules = "AspNetCoreModuleV2" in modules = "AspNetCoreModule"

und schau dir dieses Video an https://www.youtube.com/watch?v=clCR3k6kkD8

Std-Protokoll funktionierte nicht für mich, ich musste alle .ENT Core-Laufzeit-/SDK-Versionen vom Server und von meinem lokalen Server deinstallieren, um die neueste Version zu installieren, und es funktionierte, nachdem alles komplett neu veröffentlicht wurde.

Eine weitere Sache, die geholfen hat, war das Binden der IIS -App an Port 5000 ohne DNS, so dass mir tatsächlich Fehler auf http: // localhost: 5000 angezeigt wurden.

0
Milox