Bereitstellen der Website: 500 - Interner Serverfehler

189

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?

Jacob Jedryszek
quelle
1
Stellen

Antworten:

297

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

<configuration>
    <system.web>
        <customErrors mode="Off"/>
        <compilation debug="true"/>
    </system.web>
</configuration>

Auf IIS 7

<configuration>
    <system.webServer>
        <httpErrors errorMode="Detailed" />
        <asp scriptErrorSentToBrowser="true"/>
    </system.webServer>
    <system.web>
        <customErrors mode="Off"/>
        <compilation debug="true"/>
    </system.web>
</configuration>

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).

Aristos
quelle
9
Danke für den Beitrag! Der Teil, der es für mich getan hat, war: <httpErrors errorMode = "Detailliert" />
jaseeey
@codemonkeyliketab Muss gleich sein ... oder ähnlich ... wenn Sie iis express auf Ihrem Computer ausführen, öffnen Sie Ihren EventViewer ...
Aristos
4
run the browser on the serverarbeitete für mich .. danke Bruder
Rajshekar Reddy
1
@Lernen ja gibt es - Sie aktivieren den detaillierten Fehler nur für kurze Zeit, um einige Ihrer Fehler zu finden und Ihre App zum Laufen zu bringen - dann schließen Sie sie wieder
Aristos
1
Vielen Dank, das Aktivieren detaillierter Fehlermeldungen von IIS hat geholfen.
Vadim Tofan
25

Ich habe mir wegen dieses Problems die Haare ausgezogen. Wenn Sie sicherstellen, dass der folgende Eintrag in der Stammdatei web.configenthalten ist, wurde dies für mich behoben:

<configuration>
  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
  </system.webServer>
</configuration>

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.

Joshua Frank
quelle
9

Für mich war der folgende Code in der web.config der Schuldige. Als ich es entfernte, funktionierte die Website einwandfrei.

  <staticContent>
    <mimeMap fileExtension=".mp4" mimeType="video/mp4" />
  </staticContent>
user3638709
quelle
1
Danke .. hat für mich gearbeitet, aber ist diese mimeMap für die Anzeige von Videos erforderlich?
Panky Sharma
9

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.

Manish Kumar
quelle
Mein Fehler wurde behoben durch: stackoverflow.com/questions/11359957/… Musste auch Elmah installieren
Per G
7

In meinem Fall habe ich einen Fehler in meine web.configDatei 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.

Van Thi
quelle
Hatte gerade das gleiche hier. web.config wurde versehentlich in ein Unterverzeichnis kopiert und verursachte einen unerwünschten Fehler, obwohl ich "detaillierte Fehler anzeigen" auf "true" gesetzt habe.
Avni Yayin
7

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.

kenswdev
quelle
5

Stellen Sie zusätzlich zu den anderen Vorschlägen sicher, dass Sie das existingResponseAttribut des httpErrorsKnotens in Autofrom ändern Replaceoder diese Eigenschaft vollständig entfernen.

<httpErrors existingResponse="Replace" />
                              ^^^^^^^ not going to work with this here
ErikE
quelle
4

IIS meldet auch den Statuscode 500 ohne Ereignisprotokollhinweise, wenn das physische Ausgangsverzeichnis nicht über ausreichende Berechtigungen verfügt (dh IIS_IUSRS hat keinen Zugriff).

Lapsus
quelle
3

Serverfehler 500 - Interner Serverfehler. Es liegt ein Problem mit der gesuchten Ressource vor, das nicht angezeigt werden kann. Goddady. Hosting - Web - Wirtschaft - Windows Plesk

In meinem Fall ersetze ich diesen Code:

<configuration> 
  <system.webServer> 
    <httpErrors errorMode="Detailed" /> 
    <asp scriptErrorSentToBrowser="true"/> 
  </system.webServer> 
  <system.web> 
    <customErrors mode="Off"/>
    <compilation debug="true" targetFramework="4.0"/>
  </system.web> 
</configuration>

Ändern Sie dann Framework 3.5 in Framework 4. Es zeigt meinen detaillierten Fehler. Ich lösche Code in:

<httpModules></httpModules>

Es hat mein Problem gelöst.

ThanGio
quelle
3

Für IIS 8 Es gibt einen weiteren zusätzlichen Schritt als das Ändern von customErrors = Off, um den Fehlerinhalt anzuzeigen.

<system.web>
   <customErrors mode="Off" />
</system.web>
<system.webServer>
   <httpErrors existingResponse="PassThrough" errorMode="Detailed"/>
</system.webServer>

Raul hat die Frage in diesem Link beantwortet. Deaktivieren Sie benutzerdefinierte IIS8-Fehler von Raul

Michelle
quelle
Sie haben das Closing / nach "Detailed"
Manuel-84
Diese Lösung wurde für IIS 10.0.14393.0 benötigt.
Marcus Parsons
2

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 .

<system.web>
    <compilation debug="true" strict="false" explicit="true" targetFramework="4.0">
        <assemblies>
            <add assembly="System.Deployment, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
            <add assembly="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
            <add assembly="System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
            <add assembly="System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
            <add assembly="System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
            <add assembly="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
            <add assembly="System.Web.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
            <add assembly="System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
            <add assembly="System.Transactions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
        </assemblies>
    </compilation>
    <pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID">
        <namespaces>
            <clear/>
            <add namespace="System"/>
            <add namespace="System.Collections"/>
            <add namespace="System.Collections.Specialized"/>
            <add namespace="System.Configuration"/>
            <add namespace="System.Text"/>
            <add namespace="System.Text.RegularExpressions"/>
            <add namespace="System.Web"/>
            <add namespace="System.Web.Caching"/>
            <add namespace="System.Web.SessionState"/>
            <add namespace="System.Web.Security"/>
            <add namespace="System.Web.Profile"/>
            <add namespace="System.Web.UI"/>
            <add namespace="System.Web.UI.WebControls"/>
            <add namespace="System.Web.UI.WebControls.WebParts"/>
            <add namespace="System.Web.UI.HtmlControls"/>
        </namespaces>
    </pages>
    <authentication mode="None"/>
</system.web>
Edu Pelais
quelle
2

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.

Mark Kasina
quelle
Ist diese Antwort nicht im Grunde dieselbe wie diese Antwort vom Juli 2014 ?
Wai Ha Lee
1

500 Interner Fehler
Windows-Hosting-Fehler

Godaddy-Hosting-Problem

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.

<?xml version="1.0"?>

<configuration>
    <system.web>
        <trust level="Medium"/>
        <compilation debug="true" targetFramework="4.5">
            <assemblies>
                <add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
            </assemblies>
        </compilation>

        <httpRuntime targetFramework="4.5" />
        <sessionState mode="InProc" cookieless="false" timeout="90" />
        <authentication mode="Forms">
            <forms loginUrl="default.aspx"  
                   defaultUrl="default.aspx"
                   protection="All"
                   cookieless="UseCookies"
                   slidingExpiration="false"
                   timeout="30"
                   name="aeon.corpusjuris.in" />
        </authentication>

        <customErrors 
            mode="Off" 
            defaultRedirect="errorpage.aspx">

            <error statusCode="403" redirect="errorpage.aspx"/>
            <error statusCode="404" redirect="errorpage.aspx"/>
        </customErrors>

        <!--  <httpModules>
                <add name="HTTPCaching" type="HTTPCaching"/>
            </httpModules>
        -->
    </system.web>

    <runtime>
        <performanceScenario value="HighDensityWebHosting"  />
    </runtime>

    <system.webServer>
        <!--  <modules runAllManagedModulesForAllRequests="true">
                <add name="HTTPCaching" type="HTTPCaching"/>
            </modules>
        -->

        <defaultDocument>
            <files>
                <clear />
                <add value="default.aspx" />
            </files>
        </defaultDocument>

        <httpErrors errorMode="Detailed" />
        <asp scriptErrorSentToBrowser="true"/>

        <staticContent>
            <clientCache cacheControlCustom="public"
                         cacheControlMaxAge="60:00:00"
                         cacheControlMode="UseMaxAge" />
        </staticContent>
    </system.webServer>

    <system.web.extensions>
         <scripting>
             <webServices>
                 <jsonSerialization maxJsonLength="90000000">
                 </jsonSerialization>
             </webServices>
         </scripting>
    </system.web.extensions>

</configuration>
Tushar Tyagi
quelle
In meinem Fall wurde der Fehler durch <httpRuntime enableVersionHeader = "false" /> in web.config
b3wii
1

Wenn Sie einen benutzerdefinierten HttpHandler verwenden (dh implementieren IHttpModule), stellen Sie sicher, dass Sie Aufrufe seiner ErrorMethode überprüfen .

Sie können Ihren Handler veranlassen, das tatsächliche HttpExceptions(das eine nützliche MessageEigenschaft hat) während des lokalen Debuggens wie folgt zu werfen :

    public void Error(object sender, EventArgs e)
    {
        if (!HttpContext.Current.Request.IsLocal)
            return;
        var ex = ((HttpApplication)sender).Server.GetLastError();
        if (ex.GetType() == typeof(HttpException))
            throw ex;
    }

Überprüfen Sie auch die Ausnahmen InnerException.

Beschützer eins
quelle
1

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:

Manish
quelle
Diese Domainregistrierung ist am 15.06.2008 abgelaufen.
Patricia
Der Link stellt jetzt Malware bereit. Ich habe den Link entfernt
Liam
0

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":

System.Web.Abstractions
System.Web.Helpers
System.Web.Routing
System.Web.Mvc
System.Web.WebPages

Fügen Sie Ihrem Projekt die folgenden Assemblys hinzu, und setzen Sie Copy Local auf True:

Microsoft.Web.Infrastructure
System.Web.Razor
System.Web.WebPages.Deployment
System.Web.WebPages.Razor
Publish your application.
Kurkula
quelle
0

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.

user3745869
quelle
0

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.

Tomas Kubes
quelle
0

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.

Steve Woods
quelle
0

Bevor web.configich die Datei ändere, würde ich überprüfen, ob die von .NET FrameworkIhnen verwendete Version genau (ich meine es, 4.5! = 4.5.2) im Vergleich zu Ihren GoDaddyEinstellungen (ASP.Net-Einstellungen in Ihren Plesk panel) identisch ist . Das sollte Ihre web.config-Datei automatisch in das richtige Framework ändern.

Beachten Sie auch, dass vorerst (Januar '16) GoDaddymit ASP.Net 3.5und funktioniert 4.5.2. Für die Verwendung 4.5.2mit Visual Studio muss es 2012mindestens 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.

Sergio R.
quelle
0

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.

Achintya
quelle
0

Ein weiterer Grund könnte das Umschreiben der URL sein. Entfernen / kommentieren Sie einfach den Abschnitt "Umschreiben" in der Datei "web.config"

krishna chegonda
quelle