Nach dem Veröffentlichen einer ASP.NET-Webanwendung versuche ich, die Website auf meinem lokalen Server zu hosten. Wenn ich es jedoch starte, wird mir dieser Fehler in meinem Browser angezeigt:
Hoppla. 500 Internal Server Error Beim Starten von .__ ist ein Fehler aufgetreten. Anwendung.
Wie kann ich debuggen, was dieser Fehler ist? Die Website funktioniert (sowohl Debug- als auch Release-Konfigurationen), wenn IISExpress und "Web" in Visual Studio verwendet werden.
Ich verwende die Entwicklungsumgebung und habe bereits app.UseDeveloperExceptionPage();
angegeben.
Ich habe die Anweisungen here zur Bereitstellung auf IIS befolgt.
Ich habe auch den Vorschlag ausprobiert here (Re-Publishing mit "Alle vorhandenen Dateien vor dem Veröffentlichen löschen" ausgewählt). (Das OP dort hat einen etwas anderen Fehler, deshalb poste ich eine neue Frage.)
Ich habe stundenlang im Internet gesucht, aber darüber scheint es nicht viel zu geben. Irgendwelche Ideen?
Ich bin unter Windows 7 und verwende ASP.NET 5 RC1.
Sie sollten stdoutLogEnabled=true
in der Datei web.config festlegen, um den tatsächlichen Fehler anzuzeigen. Sie können angeben, wo diese Dateien mit dem Argument stdoutLogFile
geschrieben werden. Das folgende Screenshot-Beispiel schreibt in stdoutLogFile=".\logs\stdout"
. (Sie sollten sicherstellen, dass das Verzeichnis vorhanden ist; die App erstellt es nicht.)
Ja, die richtige Konfigurationsdatei kann nicht gefunden werden. Ja, die Standardumgebung ist Produktion. Es wird explizit im Visual Studio in den Projekteigenschaften entwickelt.
Update: In AspNetCore RTM heißt das Modul aspnetCore unter dem Knoten system.webServer in web.config. Wie @ErikE in Kommentaren feststellte, befindet sich die Datei web.config jetzt im Stammverzeichnis des Projekts und nicht wie in früheren Versionen unter wwwroot.
Dieser Fehler tritt auch auf, wenn Sie vom Start aus eine Datenbankverbindung versuchen (z. B. zum Seeding) und auf dem Implementierungsserver aufgrund unzureichender Vorrechte auf dem Datenbankserver ausfällt.
Dieser Fehler tritt unter mehreren Bedingungen auf. In meiner Situation habe ich die Datenbankverbindungszeichenfolge nicht richtig gesetzt. Ich habe es in Visual Studio 2017 wie folgt behoben:
1) Klicken Sie mit der rechten Maustaste auf das Projekt, wählen Sie Veröffentlichen, und öffnen Sie die Seite Veröffentlichen im Hauptbereich.
2) Wählen Sie links die Registerkarte Veröffentlichen
3) Im Bereich Zusammenfassung gibt es einen Link "Einstellungen ...". Klick es. Dadurch wird das Dialogfeld "Veröffentlichen" geöffnet.
4) Klicken Sie links auf die Registerkarte Einstellungen.
5) Erweitern Sie die Optionen zum Veröffentlichen von Dateien, und aktivieren Sie das Kontrollkästchen "Zusätzliche Dateien am Zielort entfernen".
6) Erweitern Sie Datenbanken, aktivieren Sie "Diese Verbindungszeichenfolge zur Laufzeit verwenden". (Diese Option war bereits mit meiner Azure SQL-Verbindungszeichenfolge vorbelegt, je nachdem, wie ich meine Veröffentlichungsoptionen ursprünglich eingerichtet habe.)
7) Erweitern Sie Entity Framework-Migrationen, und aktivieren Sie "Diese Migration beim Publizieren anwenden".
8) Klicken Sie auf Speichern
9) Veröffentlichen
10) Daumen drücken
Das Problem: Dieser Fehler ist höchstwahrscheinlich auf unzureichende Berechtigungen für Application Pool Identities
Zurückzuführen. Herausfinden:
Gehen Sie zu Windows Task-Manager und suchen Sie unter Registerkarte Details/Prozesse (je nach Windows-Betriebssystem) nach w3wp.exe
Und unter User name
Nach Ihrem Anwendung (<App_Pool_Name>
normalerweise DefaultAppPool
), die dort als IIS Worker Process
ausgeführt wird. Wenn Ihre App dort nicht aufgeführt ist, verfügt die App nicht über ausreichende Berechtigungen für Ihre Datenbank.
m das Problem zu beheben: Tun Sie Folgendes und gewähren Sie vollen Zugriff auf Ihre App:
Gehen Sie zu Ihrem SQL Server Management Studio und melden Sie sich als Administrator an. Öffnen Sie Sicherheit> Anmeldungen> klicken Sie mit der rechten Maustaste auf Anmeldungen, und fügen Sie einen hinzu New Login
:
Unter Allgemein:
für Login Name:
Geben Sie IIS APPPOOL\<App_Pool_Name>
normalerweise DefaultAppPool
ein
für Default Database:
zeigen Sie auf <Your_App_Database>
Unter Benutzerzuordnung:
auf der Box Users mapped to this login:
- Aktivieren Sie das Kontrollkästchen Zu <Your_App_Database>
Zuordnen.
-Unter Benutzer Geben Sie IIS APPPOOL\<App_Pool_Name>
Normalerweise DefaultAppPool
ein.
-Unter Standardschema Eingabe dbo
auf der Box Database role membership for:
<Your_App_Database>
- Aktivieren Sie die folgenden Kontrollkästchen: db_datareader
, db_datawriter
Und public
Klicken Sie auf OK
Versuche nun auf deine App zuzugreifen und es sollte funktionieren !!!