Wdrażanie strony internetowej: 500 - Wewnętrzny błąd serwera


189

Próbuję wdrożyć aplikację ASP.NET. Wdrożyłem witrynę w IIS, ale kiedy odwiedzam ją za pomocą przeglądarki, pokazuje mi to:

błąd serwera

500 wewnętrzny błąd serwera.

Wystąpił problem z poszukiwanym zasobem i nie można go wyświetlić.

Po majstrowaniu przy web.config otrzymałem:

Nie można wyświetlić strony, ponieważ wystąpił wewnętrzny błąd serwera.

Jak mogę zobaczyć rzeczywisty problem związany z tym błędem serwera?


1
Upewnij się, że masz
przypisane

Odpowiedzi:


298

Po pierwsze, musisz włączyć i zobaczyć szczegółowe błędy swoich wiadomości internetowych, ponieważ jest to wiadomość ogólna bez informowania o tym, co naprawdę dzieje się ze względów bezpieczeństwa.

Ze szczegółowym błędem możesz znaleźć prawdziwy problem tutaj.

Ponadto, jeśli możesz uruchomić przeglądarkę na serwerze , otrzymasz szczegółowe informacje o błędzie, ponieważ serwer rozpoznaje, że jesteś lokalny, i pokazuje ci go. Lub jeśli możesz przeczytać dziennik serwera za pomocą Podglądu zdarzeń, zobaczysz również szczegóły błędu.

W IIS 6

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

W IIS 7

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

Uwaga: Możesz uniknąć Debug = true . Musisz tylko na chwilę zamknąć niestandardowe błędy i wyświetlić szczegółową stronę błędu.

Odwołanie: Włączanie niestandardowego powiadamiania o błędach systemu Windows w artykułach pomocy Go Daddy .

Może to również pomóc: Jak włączyć szczegółowe komunikaty o błędach (z IIS).


9
Dzięki za post! Część, która to zrobiła dla mnie to: <httpErrors errorMode = "Szczegółowe" />
jaseeey

@codemonkeyliketab Musi być taki sam ... lub podobny ... jeśli uruchamiasz iis express na swoim komputerze otwórz EventViewer ...
Aristos

4
run the browser on the serverpracował dla mnie .. dziękuję bracie
Rajshekar Reddy

1
@Learning tak jest - włączasz szczegółowy błąd tylko na krótki czas, aby móc znaleźć niektóre z twoich błędów i sprawić, że Twoja aplikacja działa - a następnie ją zamkniesz
Aristos

1
Dzięki, włączenie szczegółowych komunikatów o błędach z IIS pomogło.
Vadim Tofan

25

Wyciągałem włosy z tego problemu. Upewnienie się, że następujący wpis znajduje się w web.configpliku głównym , naprawiło go dla mnie:

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

Pamiętaj, że musisz dodać to do istniejących elementów XML , jeśli już tam są. Nie możesz po prostu dodać na końcu pliku, ponieważ nie możesz mieć wielu kopii dowolnego elementu.


9

Dla mnie przyczyną był następujący kod w pliku web.config. Kiedy go usunąłem, strona działała dobrze.

  <staticContent>
    <mimeMap fileExtension=".mp4" mimeType="video/mp4" />
  </staticContent>

1
Dzięki .. pracowałeś dla mnie, ale czy ta mimeMap jest wymagana do wyświetlania filmów?
panky sharma

9

W końcu rozwiązałem ten błąd „500 Internal server” podczas wdrażania aplikacji ASP.NET MVC 3.0 na hostingu współdzielonym godaddy.ocm.

w jakiś sposób pojawiły się rozbieżności w odniesieniu do wersji plików DLL i wersji wspomnianej w pliku web.config .

Próbowałem wszystkich opcji wymienionych na różnych forach. Nic nie pomogło, chociaż wszyscy sugerowali taką samą naprawę, ale jakoś nie zadziałało w moim scenariuszu. W końcu po dwóch dniach walenia głową. Postanowiłem usunąć wszystkie odwołania do plików DLL i usunąć web.cofig (zrobić kopię lokalną) z projektu i pozwolić aplikacji wyrzucić błąd, a następnie dodać pliki DLL jeden po drugim, tworząc kopię do local = true.

Po dodaniu wszystkich plików DLL utworzyłem nową aplikację ASP.NET MVC i skopiowałem web.config nowej aplikacji do mojej faktycznej aplikacji. Więc moja aktualna aplikacja ma teraz nowy plik web.config, a następnie skopiowałem parametry połączenia i inne odwołania z lokalnej kopii pliku web.config, który zapisałem.

Właśnie skompilowałem aplikację i opublikowałem w folderze lokalnym, a FTP opublikowałem w folderze goDaddy.

Udało się i wreszcie mój problem został rozwiązany.


Mój błąd rozwiązany przez: stackoverflow.com/questions/11359957/… Musiałem także zainstalować Elmah
Per G

7

W moim przypadku pomyłkę w moim web.configpliku. Klucz aplikacji został jakoś umieszczony pod znacznikiem <appSettings>. Ale zastanawiam się, dlaczego nie wyświetla błędu konfiguracji. Błąd 500 jest zbyt ogólny, aby zbadać problem.


Właśnie miałem to samo tutaj. Plik web.config został przez pomyłkę skopiowany do podkatalogu i spowodował błąd, chociaż ustawiłem „pokaż szczegółowe błędy” na true.
Avni Yayin

7

Moja pierwsza próba opublikowania, a następnie uruchomienia bardzo prostej witryny obsługującej tylko kod HTML „Nie można wyświetlić strony, ponieważ wystąpił błąd wewnętrzny serwera”.

Problem: Miałem witrynę ustawioną na .NET 3.5 w Visual Studio (prawym przyciskiem myszy projekt witryny sieci Web -> Strony właściwości -> Kompilacja), ale miałem witrynę sieci Web na platformie Azure skonfigurowaną jako .NET 4.0. Ups! Zmieniłem na Azure na 3.5 i działało.


5

Oprócz innych sugestii należy zmienić existingResponseatrybut httpErrorswęzła na Autoz Replacelub całkowicie usunąć tę właściwość.

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

4

IIS zgłasza również kod statusu 500 bez żadnych wskazówek w dzienniku zdarzeń, jeśli nie ma wystarczających uprawnień do fizycznego katalogu domowego (tzn. IIS_IUSRS nie ma dostępu).


3

Błąd serwera 500 - Wewnętrzny błąd serwera. Wystąpił problem z poszukiwanym zasobem i nie można go wyświetlić. Goddady. Hosting - Internet - Ekonomia - Windows Plesk

W moim przypadku zastępuję ten kod:

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

Następnie zmień framework 3.5 na framework 4. Pokazuje mój szczegółowy błąd. Usuwam kod w:

<httpModules></httpModules>

To rozwiązało mój problem.


3

Dla IIS 8 Istnieje dodatkowy krok do zrobienia niż zmiana customErrors = Off, aby wyświetlić treść błędu.

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

Raul odpowiedział na pytanie w tym linku Wyłącz niestandardowe błędy IIS8 autorstwa Raul


przegapiłeś zamknięcie / po „Szczegółowym”
manuel-84

To rozwiązanie było potrzebne do IIS 10.0.14393.0.
Marcus Parsons

2

Prawdopodobnie plik web.config jest nieprawidłowy lub brakuje jakiegoś tagu. Rozwiązałem problem, używając poprawnych tagów konfiguracyjnych dla .NET 4.

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

2

Zdałem sobie sprawę, że uprawnienia do plików i folderów na twoim serwerze również mają znaczenie. Przesłałem swoje pliki z systemu operacyjnego Linux i zwykle uprawnienia do odczytu i zapisu są ograniczone. Po przesłaniu uprawnienia są nadal takie same jak na komputerze lokalnym.

Miałem ten sam błąd i właśnie zmieniłem uprawnienia do folderu, który przesłałem i błąd zniknął.

Mam nadzieję, że to komuś pomoże.


Czy ta odpowiedź nie jest zasadniczo taka sama jak ta z lipca 2014 r. ?
Wai Ha Lee

1

500 Błąd wewnętrzny Błąd
hostingu Windows

Problem z hostingiem GoDaddy

Napotkałem ten sam problem, ale teraz mój problem został rozwiązany. Zawsze używaj na tym hostingu, to działa.

Polecę również wszystkim, abyście dokonali wszelkich zmian, które chcecie wprowadzić w pliku web.config. Zrób to jeden po drugim i przetestuj to samo w domenie na żywo, aby znaleźć dokładny problem lub funkcje, których dostawca usług hostingowych nie zezwala.

<?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>

w moim przypadku błąd został spowodowany przez <httpRuntime enableVersionHeader = "false" /> in web.config
b3wii

1

Jeśli używasz niestandardowego narzędzia HttpHandler (tj. Implementującego IHttpModule), upewnij się, że sprawdzasz wywołania jego Errormetody.

Możliwe, że Twój moduł obsługi wyrzuci rzeczywistą HttpExceptions(która ma przydatną Messagewłaściwość) podczas lokalnego debugowania w następujący sposób:

    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;
    }

Sprawdź także wyjątek InnerException.


1

500 wewnętrznych błędów serwera może powstać z kilku powodów. Pierwszym powodem może być niepoprawne utworzenie pliku web.config, co oznacza, że ​​brakuje jakiegoś znacznika w pliku web.config. Po drugie, ten błąd może wynikać z jakiegoś problemu z kodem. Aby sprawdzić, który składnik aplikacji internetowej powoduje ten błąd, możesz sprawdzić Ustawienia aplikacji w pliku web.config. Szczegółowy opis rozwiązywania i śledzenia 500 wewnętrznych błędów serwera z diagramem znajduje się tutaj:


Rejestracja domeny wygasła 15.06.2018.
Patricia

Łącze obsługuje teraz złośliwe oprogramowanie. Usunąłem link
Liam

0

Upewnij się, że Twoje konto korzysta z IIS 7. Aby uzyskać więcej informacji, zobacz Dostosowywanie ustawień IIS na koncie hostingu systemu Windows. Postępuj zgodnie z instrukcjami w Zmiana trybu potoku na koncie hostingu systemu Windows IIS 7. Wybierz tryb zintegrowanego rurociągu. W sekcji Odwołania do projektu ustaw opcję Kopiuj lokalnie na wartość Prawda dla następujących zespołów:

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

Dodaj następujące zestawy do swojego projektu, a następnie ustaw opcję Kopiuj lokalnie na True:

Microsoft.Web.Infrastructure
System.Web.Razor
System.Web.WebPages.Deployment
System.Web.WebPages.Razor
Publish your application.

0

Czasami powodem może być to, że jeden z twoich zestawów .dll nie jest poprawnie zarejestrowany na serwerze.

Na przykład można pomyślnie uruchomić aplikację sieci Web C # Excel na komputerze lokalnym z zainstalowanym pakietem Office, jednocześnie otrzymując błąd 500 przy wdrażaniu serwera, ponieważ na serwerze nie ma zainstalowanego pakietu Office, a zatem pojawia się błąd serwera.


0

Dla tych, którzy mają taką możliwość (hosting VPS nie hosting):

Połącz się z serwerem hostingowym za pomocą pulpitu zdalnego. Otwórz przeglądarkę internetową ze zdalnego pulpitu, a zobaczysz szczegółowy opis błędu.

Nie musisz modyfikować pliku web.config ani ujawniać żadnych danych innym osobom.


0

Jeśli używasz IIS 8.5, być może trzeba zmienić ustawienie Identyfikatora aplikacji z ApplicationPoolId na NetworkService

Kliknij prawym przyciskiem myszy odpowiednią pulę aplikacji, kliknij „Ustawienia zaawansowane”, a następnie przewiń w dół do identyfikatora - prawdopodobnie zostanie ustawiony na ApplicationPoolIdentity . Kliknij przycisk (..) i wybierz NetworkService z rozwijanej listy.

Upewnij się także, że jeśli jest to aplikacja .NET 2.0, to nie odwołujesz się do frameworka 4.0 w swojej puli aplikacji.


0

Przed zmianą web.configpliku sprawdziłbym, .NET Frameworkże używana wersja jest dokładnie (mam na myśli 4.5! = 4.5.2) taka sama w porównaniu do twoich GoDaddyustawień (ustawienia ASP.Net w twoim Plesk panel). To powinno automatycznie zmienić plik web.config na poprawne środowisko.

Zauważ też, że na razie (styczeń '16), GoDaddydziała z ASP.Net 3.5i 4.5.2. Aby używać 4.5.2z Visual Studio, musi to być 2012wersja nowsza, a jeśli nie 2015, musisz pobrać i zainstalować .NET Framework 4.5.2 Developer Package.

Jeśli nadal nie działa, to tak, następnym krokiem powinno być włączenie szczegółowego raportowania błędów, aby można było go debugować.


0

Ostatnio miałem ten sam problem, miejsce na dysku było pełne na serwerze. Wyczyszczenie przestrzeni rozwiązało problem.


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.