Ich versuche, eine ASP.NET-Anwendung bereitzustellen. Ich habe die Site für IIS bereitgestellt, aber beim Besuch mit dem Browser wird Folgendes angezeigt:
Serverfehler
500 - Interner Serverfehler.
Es liegt ein Problem mit der gesuchten Ressource vor, das nicht angezeigt werden kann.
Nachdem ich mit der web.config herumgespielt hatte, bekam ich:
Die Seite kann nicht angezeigt werden, da ein interner Serverfehler aufgetreten ist.
Wie kann ich das eigentliche Problem hinter diesem Serverfehler erkennen?
asp.net
iis
error-handling
Jacob Jedryszek
quelle
quelle
Antworten:
Zunächst müssen Sie detaillierte Fehler Ihrer Webnachrichten aktivieren und anzeigen, da dies eine allgemeine Nachricht ist, ohne Informationen darüber zu geben, was aus Sicherheitsgründen wirklich passiert.
Mit dem detaillierten Fehler können Sie das eigentliche Problem hier finden.
Wenn Sie den Browser auf dem Server ausführen können , erhalten Sie Details zum Fehler, da der Server erkennt, dass Sie lokal sind, und ihn Ihnen anzeigt. Wenn Sie das Protokoll des Servers mithilfe der Ereignisanzeige lesen können , werden auch die Details Ihres Fehlers angezeigt.
Auf IIS 6
Auf IIS 7
Hinweis: Sie können Debug = true vermeiden . Sie müssen die benutzerdefinierten Fehler nur für eine Weile schließen und die detaillierte Fehlerseite aufrufen.
Referenz: Aktivieren der benutzerdefinierten Windows-Fehlermeldung in den Hilfeartikeln von Go Daddy .
Dies kann auch helfen: So aktivieren Sie die detaillierten Fehlermeldungen (von IIS).
quelle
run the browser on the server
arbeitete für mich .. danke BruderIch habe mir wegen dieses Problems die Haare ausgezogen. Wenn Sie sicherstellen, dass der folgende Eintrag in der Stammdatei
web.config
enthalten ist, wurde dies für mich behoben:Denken Sie daran, dass Sie dies zu den vorhandenen XML- Elementen hinzufügen müssen , falls diese bereits vorhanden sind. Sie können nicht einfach am Ende der Datei hinzufügen, da Sie nicht mehrere Kopien eines Elements haben können.
quelle
Für mich war der folgende Code in der web.config der Schuldige. Als ich es entfernte, funktionierte die Website einwandfrei.
quelle
Ich habe diesen "500 Internal Server" -Fehler beim Bereitstellen der ASP.NET MVC 3.0-Anwendung auf dem gemeinsam genutzten Hosting von godaddy.ocm endlich behoben.
Irgendwie gab es Unstimmigkeiten bei der Version der referenzierten DLL-Dateien und der in der Datei erwähnten Version
web.config
.Ich habe alle in verschiedenen Foren genannten Optionen ausprobiert. Nichts hat geholfen, obwohl alle die gleiche Art von Lösung vorgeschlagen haben, aber irgendwie hat es in meinem Szenario nicht funktioniert. Endlich, nachdem ich zwei Tage lang meinen Kopf geschlagen hatte. Ich entschied mich, alle DLL-Dateireferenzen zu löschen und web.cofig (eine lokale Kopie erstellen) aus dem Projekt zu löschen. Die Anwendung ließ den Fehler auslösen und fügte dann die DLL-Dateien nacheinander hinzu, wobei eine Kopie zu local = true erstellt wurde.
Nachdem alle DLL-Dateien hinzugefügt wurden, habe ich eine neue ASP.NET MVC-Anwendung erstellt und die web.config der neuen Anwendung in meine eigentliche Anwendung kopiert. Meine eigentliche Anwendung hat jetzt eine neue web.config, und dann habe ich den Verbindungsstring und andere Referenzen von der lokalen Kopie von web.config kopiert, die ich gespeichert habe.
Ich habe gerade die Anwendung kompiliert und in einem lokalen Ordner veröffentlicht und den veröffentlichten Ordner per FTP an goDaddy gesendet.
Es hat funktioniert und schließlich war mein Problem gelöst.
quelle
In meinem Fall habe ich einen Fehler in meine
web.config
Datei eingefügt. Der Anwendungsschlüssel wurde irgendwie unter das <appSettings> -Tag gestellt. Aber ich frage mich, warum es keinen Konfigurationsfehler anzeigt. Der Fehler 500 ist zu allgemein, um das Problem zu untersuchen.quelle
Mein erster Versuch, eine sehr einfache Site zu veröffentlichen und dann auszuführen, die nur HTML-Code liefert. "Die Seite kann nicht angezeigt werden, da ein interner Serverfehler aufgetreten ist."
Das Problem: Ich hatte die Site in Visual Studio auf .NET 3.5 eingestellt (Rechtsklick auf Websiteprojekt -> Eigenschaftenseiten -> Erstellen), aber die Website in Azure als .NET 4.0 konfiguriert. Hoppla! Ich habe es in Azure auf 3.5 geändert und es hat funktioniert.
quelle
Stellen Sie zusätzlich zu den anderen Vorschlägen sicher, dass Sie das
existingResponse
Attribut deshttpErrors
Knotens inAuto
from ändernReplace
oder diese Eigenschaft vollständig entfernen.quelle
IIS meldet auch den Statuscode 500 ohne Ereignisprotokollhinweise, wenn das physische Ausgangsverzeichnis nicht über ausreichende Berechtigungen verfügt (dh IIS_IUSRS hat keinen Zugriff).
quelle
In meinem Fall ersetze ich diesen Code:
Ändern Sie dann Framework 3.5 in Framework 4. Es zeigt meinen detaillierten Fehler. Ich lösche Code in:
Es hat mein Problem gelöst.
quelle
Für IIS 8 Es gibt einen weiteren zusätzlichen Schritt als das Ändern von customErrors = Off, um den Fehlerinhalt anzuzeigen.
Raul hat die Frage in diesem Link beantwortet. Deaktivieren Sie benutzerdefinierte IIS8-Fehler von Raul
quelle
Wahrscheinlich ist Ihre web.config-Datei falsch oder es fehlt ein Tag. Ich habe mein Problem mit den richtigen Konfigurations-Tags für .NET 4 gelöst .
quelle
Ich habe festgestellt, dass die Berechtigungen für die Dateien und Ordner auf Ihrem Server ebenfalls wichtig sind. Ich habe meine Dateien von einem Linux-Betriebssystem hochgeladen und normalerweise sind die Berechtigungen zum Lesen und Schreiben beschränkt. Beim Hochladen sind die Berechtigungen also immer noch dieselben wie auf dem lokalen Computer.
Ich hatte den gleichen Fehler und habe gerade die Berechtigungen für den Ordner geändert, den ich hochgeladen hatte, und der Fehler war verschwunden.
Hoffe es hilft jemandem.
quelle
Ich hatte das gleiche Problem, aber jetzt wurde mein Problem behoben. Verwenden Sie in diesem Hosting immer dies, es funktioniert.
Ich werde Ihnen allen auch empfehlen, alle Änderungen vorzunehmen, die Sie an Ihrer web.config-Datei vornehmen möchten. Bitte machen Sie es nacheinander und testen Sie es auf der Live-Domain, damit Sie das genaue Problem oder die Funktionen finden, die Ihr Hosting-Anbieter Ihnen nicht erlaubt.
quelle
Wenn Sie einen benutzerdefinierten HttpHandler verwenden (dh implementieren
IHttpModule
), stellen Sie sicher, dass Sie Aufrufe seinerError
Methode überprüfen .Sie können Ihren Handler veranlassen, das tatsächliche
HttpExceptions
(das eine nützlicheMessage
Eigenschaft hat) während des lokalen Debuggens wie folgt zu werfen :Überprüfen Sie auch die Ausnahmen
InnerException
.quelle
500 interne Serverfehler können aus mehreren Gründen auftreten. Der erste Grund könnte sein, dass die Datei web.config nicht ordnungsgemäß erstellt wurde. Dies bedeutet, dass Sie ein Tag in der Datei web.config übersehen haben. Zweitens kann dieser Fehler auf ein Codeproblem zurückzuführen sein. Um zu überprüfen, welche Komponente der Webanwendung diesen Fehler verursacht, können Sie die Anwendungseinstellung in der Datei web.config überprüfen. Das Detail zum Lösen und Verfolgen von 500 internen Serverfehlern mit Diagramm ist hier angegeben:
quelle
Stellen Sie sicher, dass Ihr Konto IIS 7 verwendet. Weitere Informationen finden Sie unter Anpassen der IIS-Einstellungen in Ihrem Windows-Hosting-Konto. Befolgen Sie die Anweisungen unter Ändern des Pipeline-Modus auf Ihrem Windows IIS 7-Hosting-Konto. Wählen Sie Integrierter Pipeline-Modus. Setzen Sie in Ihrem Abschnitt "Projektreferenzen" für die folgenden Assemblys "Lokal kopieren" auf "Wahr":
Fügen Sie Ihrem Projekt die folgenden Assemblys hinzu, und setzen Sie Copy Local auf True:
quelle
Manchmal liegt der Grund möglicherweise darin, dass eine Ihrer DLL-Assemblys nicht korrekt auf dem Server registriert ist.
Beispielsweise können Sie eine C # Excel-Webanwendung mit installiertem Office erfolgreich auf Ihrem lokalen Computer ausführen, während bei der Serverbereitstellung der Fehler 500 angezeigt wird, da auf dem Server keine Office-Suite installiert ist und Sie daher den Serverfehler erhalten.
quelle
Für diejenigen, die diese Möglichkeit haben (VPS-Hosting nicht Webhosting):
Stellen Sie über Remotedesktop eine Verbindung zu Ihrem Hosting-Server her. Öffnen Sie den Webbrowser von Ihrem Remotedesktop aus und Sie sehen die detaillierte Beschreibung des Fehlers.
Sie müssen web.config nicht ändern oder Details anderen Personen zugänglich machen.
quelle
Wenn Sie IIS 8.5 verwenden, müssen Sie möglicherweise die ApplicationPool ID-Einstellung von ApplicationPoolId in NetworkService ändern
Klicken Sie mit der rechten Maustaste auf den betreffenden Anwendungspool, klicken Sie auf "Erweiterte Einstellungen" und scrollen Sie dann nach unten zur ID - diese wird wahrscheinlich auf ApplicationPoolIdentity festgelegt . Klicken Sie auf die Schaltfläche (..) und wählen Sie stattdessen NetworkService aus der Dropdown-Liste aus.
Stellen Sie außerdem sicher, dass Sie bei einer .NET 2.0-Anwendung nicht auf das 4.0-Framework in Ihrem App-Pool verweisen.
quelle
Bevor
web.config
ich die Datei ändere, würde ich überprüfen, ob die von.NET Framework
Ihnen verwendete Version genau (ich meine es, 4.5! = 4.5.2) im Vergleich zu IhrenGoDaddy
Einstellungen (ASP.Net-Einstellungen in IhrenPlesk panel
) identisch ist . Das sollte Ihre web.config-Datei automatisch in das richtige Framework ändern.Beachten Sie auch, dass vorerst (Januar '16)
GoDaddy
mitASP.Net 3.5
und funktioniert4.5.2
. Für die Verwendung4.5.2
mit Visual Studio muss es2012
mindestens neu sein. Wenn nicht 2015, müssen Sie das .NET Framework 4.5.2 Developer Package herunterladen und installieren.Wenn dies immer noch nicht funktioniert, sollte Ihr nächster Schritt darin bestehen, eine detaillierte Fehlerberichterstattung zu aktivieren, damit Sie sie debuggen können.
quelle
Ich bin kürzlich auf dasselbe Problem gestoßen, der Speicherplatz auf dem Server war voll. Durch das Löschen von Speicherplatz wurde das Problem behoben.
quelle
Ein weiterer Grund könnte das Umschreiben der URL sein. Entfernen / kommentieren Sie einfach den Abschnitt "Umschreiben" in der Datei "web.config"
quelle
Versuchen Sie, im Debug-Modus (in Visual Studio) zu kompilieren. Wenn Sie sich im Release-Modus befinden, sind viele Fehler beim Umschreiben von URLs nicht verfügbar.
Das Bild zeigt das Kombinationsfeld Debug-Auswahl in Visual Studio
quelle