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?

Jacob Jedryszek
źródło
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).

Arystos
źródło
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.

Joshua Frank
źródło
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>
użytkownik3638709
źródło
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.

Manish Kumar
źródło
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.

Van Thi
źródło
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.

kenswdev
źródł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
ErikE
źródło
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).

lapsus
źródło
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.

ThanGio
źródło
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

Michelle
źródło
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>
Edu Pelais
źródło
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.

mark kasina
źródło
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>
Tushar Tyagi
źródło
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.

Protektor jeden
źródło
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:

Manish
źródło
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.
Kurkula
źródło
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.

użytkownik3745869
źródło
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.

Tomas Kubes
źródło
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.

Steve Woods
źródło
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ć.

Sergio R.
źródło
0

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

Achintya
źródło