Web sitesi dağıtma: 500 - Dahili sunucu hatası


189

Bir ASP.NET uygulaması dağıtmaya çalışıyorum. Siteyi IIS'ye dağıttım, ancak tarayıcı ile ziyaret ettiğinizde bana şunu gösteriyor:

Server hatası

500 - Dahili sunucu hatası.

Aradığınız kaynakla ilgili bir sorun var ve görüntülenemiyor.

Web.config ile uğraştıktan sonra:

Dahili sunucu hatası oluştuğundan sayfa görüntülenemiyor.

Bu sunucu hatasının arkasındaki asıl sorunu nasıl görebilirim?


1

Yanıtlar:


298

Öncelikle, web mesajlarınızın ayrıntılı hatalarını etkinleştirmeniz ve görmeniz gerekir , çünkü bu, güvenlik nedeniyle gerçekten neler olduğu hakkında bilgi vermeden genel bir mesajdır.

Ayrıntılı hatayla, gerçek sorunu burada bulabilirsiniz.

Ayrıca, tarayıcıyı sunucuda çalıştırabilirseniz, sunucu yerel olduğunuzu fark ettiğinden ve size gösterdiğinden hata hakkında ayrıntılar alırsınız. Veya günlüğü okuyabiliyorsanız Olay Görüntüleyicisi'ni kullanarak sunucunun ayrıntılarını da görürsünüz.

Açık IIS 6

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

IIS 7'de

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

Not: Hata ayıklama = true değerinden kaçınabilirsiniz . Özel hataları bir süreliğine kapatmanız ve ayrıntılı hata sayfasını almanız yeterlidir.

Referans: , Windows özel hata mesajlaşma etkinleştirilmesi de git babanın yardım makaleleri.

Ayrıca, bu yardımcı olabilir: Ayrıntılı hata iletileri (IIS'den) nasıl etkinleştirilir .


9
Gönderi için teşekkürler! Benim için yapan bölüm: <httpErrors errorMode = "Ayrıntılı" />
jaseeey

@codemonkeyliketab Aynı olmalı ... ya da benzeri ... iis express'i bilgisayarınızda çalıştırırsanız EventViewer'ınızı açın ...
Aristos

4
run the browser on the serverbenim için çalıştı .. teşekkürler kardeşim
Rajshekar Reddy

1
@ Öğrenme evet var - hatalarınızın bazılarını bulabilmeniz ve uygulamanızı çalıştırabilmeniz için ayrıntılı hatayı yalnızca kısa bir süre için etkinleştirirsiniz - o zaman kapatırsınız
Aristos

1
Teşekkürler, IIS'den ayrıntılı hata iletilerini etkinleştirmek yardımcı oldu.
Vadim Tofan

25

Bu konuda saçımı çekiyordum. Aşağıdaki girdinin kök web.configdosyada olduğundan emin olmak benim için düzeltti:

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

Zaten mevcutlarsa , bunu mevcut XML öğelerine eklemeniz gerektiğini unutmayın . Dosyanın sonuna ekleyemezsiniz, çünkü herhangi bir öğenin birden fazla kopyasına sahip olamazsınız.


9

Benim için, web.config dosyasındaki şu kod suçluydu. Kaldırdığımda, web sitesi iyi çalıştı.

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

1
Teşekkürler .. benim için çalıştı ama mimeMap videoları görüntülemek için gerekli mi?
panky sharma

9

Sonunda godaddy.ocm paylaşılan barındırma ASP.NET MVC 3.0 uygulamasını dağıtırken bu "500 Dahili sunucu" hatasını çözdü.

bir şekilde başvurulan DLL dosyalarının sürümünde ve dosyada belirtilen sürümde tutarsızlıklar vardı web.config .

Çeşitli forumlarda bahsedilen tüm seçenekleri denedim. Herkes aynı tür bir düzeltme önermesine rağmen hiçbir şey yardımcı olmadı, ancak bir şekilde senaryomda işe yaramadı. Sonunda iki gün kafamı vurarak. Tüm DLL dosya başvurusunu silmeye ve web.cofig (yerel bir kopyasını oluştur) projeden silmeye ve uygulamanın hatayı atmasına izin verin ve sonra DLL dosyalarını tek tek local = true'ya kopyalayarak ekleyin.

Tüm DLL dosyaları eklendikten sonra yeni bir ASP.NET MVC uygulaması oluşturdum ve yeni uygulamanın web.config dosyasını gerçek uygulamama kopyaladım. Bu yüzden asıl uygulamamın artık yeni bir web.config dosyası var ve sonra kaydettiğim web.config dosyasının yerel kopyasından connectionstring ve diğer referansları kopyaladım.

Sadece uygulamayı derledim ve yerel bir klasöre yayınladım ve FTP yayınlanan klasörü goDaddy'ye yayınladım.

İşe yaradı ve sonunda sorunum çözüldü.


Benim hatam tarafından çözüldü: stackoverflow.com/questions/11359957/… Ayrıca Elmah
Per G

7

Benim durumumda, dosyama bir hata koydum web.config. Uygulama anahtarı bir şekilde <appSettings> etiketi altına konuldu. Ama neden bir yapılandırma hatası göstermediğini merak ediyorum. Hata 500, sorunu araştırmak için çok geneldir.


Sadece burada aynıydı. web.config yanlışlıkla bir alt dizine kopyalandı ve "ayrıntılı hataları göster" i doğru olarak ayarlasam da hatalı hataya neden oldu.
Avni Yayin

7

Yalnızca HTML'yi sunan çok basit bir siteyi yayınlamak ve çalıştırmak için ilk denemem "Dahili sunucu hatası oluştuğundan sayfa görüntülenemiyor."

Sorun: Siteyi Visual Studio'da .NET 3.5'e ayarladım (sağ tıklama web sitesi projesi -> Özellik Sayfaları -> Oluştur), ancak Azure'da Web Sitesi .NET 4.0 olarak yapılandırıldı. Hata! Azure'da 3.5 olarak değiştirdim ve işe yaradı.


5

Diğer önerilere ek olarak, değiştirmek için emin olun existingResponseniteliğini httpErrorsiçin düğüm Autogelen Replaceveya tamamen bu özelliği kaldırmak için.

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

4

IIS, fiziksel giriş dizininde yeterli izin yoksa (yani IIS_IUSRS'in erişimi yoksa) herhangi bir olay günlüğü ipucu olmadan durum kodu 500'ü bildirir.


3

Sunucu Hatası 500 - Dahili sunucu hatası. Aradığınız kaynakla ilgili bir sorun var ve görüntülenemiyor. Goddady. Hosting - Web - Ekonomi - Windows Plesk

Benim durumumda, bu kodu değiştirin:

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

Sonra çerçeve 3.5 çerçeve 4 değiştirin. Bu benim ayrıntılı hata gösterir. İçindeki kodu siliyorum:

<httpModules></httpModules>

Sorunumu çözdü.


3

IIS 8 için Hata içeriğini göstermek için customErrors = Off değerini değiştirmekten başka ek bir adım vardır.

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

Raul bu bağlantıdaki soruyu yanıtladı. Raul tarafından IIS8 özel hatalarını kapat


kapanışını / "Ayrıntılı" dan sonra cevapsız bıraktınız
manuel-84

Bu çözüm, IIS 10.0.14393.0 için gerekli olan şeydi.
Marcus Parsons

2

Muhtemelen web.config dosyanız yanlış veya bazı etiketi eksik. .NET 4 için doğru yapılandırma etiketlerini kullanarak sorunumu çözdüm .

<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

Sunucunuzdaki dosya ve klasörlerin izinlerinin de önemli olduğunu fark ettim. Dosyalarımı bir linux işletim sisteminden yükledim ve genellikle izinler okuma ve yazma için sınırlıdır. Bu yüzden yüklendiğinde, izin hala yerel makinedeki ile aynıdır.

Aynı hatayı aldım ve yüklediğim klasör için izinleri değiştirdim ve hata gitti.

Umarım birine yardımcı olur.


Bu cevap temel olarak Temmuz 2014'teki cevapla aynı değil mi?
Wai Ha Lee

1

500 Dahili Hata
Windows Barındırma Hatası

Godaddy Barındırma sorunu

Aynı sorunla karşı karşıya kaldım, ancak şimdi sorunum çözüldü. Her zaman bu çalışır bu hosting kullanın.

Ayrıca web.config dosyanızda yapmak istediğiniz değişiklikleri yapmanızı tavsiye ederim. Lütfen bunu tek tek yapın ve barındırma sağlayıcınızın kullanmanıza izin vermediği kesin sorunu veya özellikleri bulabilmek için canlı etki alanında aynı şeyi test edin.

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

benim durumumda hata neden oldu <httpRuntime enableVersionHeader = "false" /> web.config'de
b3wii

1

Özel bir HttpHandler (yani, uygulama IHttpModule) kullanıyorsanız, Erroryöntemine yapılan aramaları incelediğinizden emin olun .

Yerel hata ayıklama sırasında işleyicinizin asıl HttpExceptions(yararlı bir Messageözelliğe sahip) atmasını sağlayabilirsiniz :

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

Ayrıca İstisnaları kontrol ettiğinizden emin olun InnerException.


1

Çeşitli nedenlerden dolayı 500 dahili sunucu hatası ortaya çıkabilir. İlk neden, web.config dosyasının düzgün oluşturulmamış olması olabilir, bu da web.config dosyasındaki bazı etiketleri kaçırdığınız anlamına gelir. İkincisi, bu hata bazı kod problemlerinden kaynaklanabilir. Web uygulamasının hangi bileşeninin bu hataya neden olduğunu kontrol etmek için web.config dosyasında Uygulama ayarını kontrol edebilirsiniz. Şema ile 500 dahili sunucu hatasını çözme ve izleme detayı burada verilmiştir:


Bu alan adı kaydının süresi 15/06/2018 tarihinde sona erdi.
Patricia

Bağlantı şimdi kötü amaçlı yazılım sunuyor. Bağlantıyı kaldırdım
Liam

0

Hesabınızın IIS 7 kullandığından emin olun. Daha fazla bilgi için, bkz. Windows Hosting Hesabınızdaki IIS Ayarlarını Özelleştirme. Windows IIS 7 Hosting Hesabınızdaki Boru Hattı Modunu Değiştirme bölümündeki talimatları izleyin. Tümleşik Boru Hattı Modu'nu seçin. Proje Referansları bölümünüzde, aşağıdaki derlemeler için Yerel Kopyala'yı Doğru olarak ayarlayın:

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

Projenize aşağıdaki derlemeleri ekleyin ve sonra Yerel Kopyala'yı Doğru olarak ayarlayın:

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

0

Bazen, .dll derlemelerinizden biri sunucuda doğru olarak kaydedilmemiş olabilir.

Örneğin, sunucuda bir Office paketi yüklü olmadığından ve sunucu dağıtımında 500 hatası alırken Office yüklüyken yerel makinenizde C # Excel web uygulamasını başarıyla çalıştırabilirsiniz ve böylece sunucu hatası alırsınız.


0

Bu olasılığı olanlar için (VPS hosting web hosting değil):

Barındırma sunucunuza Uzak Masaüstü üzerinden bağlanın. Uzak masaüstünüzden Web Tarayıcısını açın, hatanın ayrıntılı açıklamasını göreceksiniz.

Web.config dosyasını değiştirmeniz veya herhangi bir ayrıntıyı kimseye göstermeniz gerekmez.


0

IIS 8.5 kullanıyorsanız, ApplicationPool ID ayarını ApplicationPoolId yerine NetworkService olarak değiştirmeniz gerekebilir.

Söz konusu Uygulama Havuzunu sağ tıklayın, "Gelişmiş Ayarlar" ı tıklayın ve ID'ye ilerleyin - muhtemelen ApplicationPoolIdentity olarak ayarlanacaktır . Düğmeyi (..) tıklayın ve NetworkService'i seçin açılır listeden seçin.

Ayrıca, .NET 2.0 uygulamasıysa, Uygulama Havuzunuzdaki 4.0 çerçevesine başvurmadığınızdan emin olun.


0

web.configDosyayı değiştirmeden önce , kullandığınız .NET Frameworksürümün GoDaddyayarlarınızla (ASP.Net ayarları Plesk panel) karşılaştırıldığında tam olarak aynı olduğunu kontrol ediyorum (yani, 4.5! = 4.5.2 ). Bu, web.config dosyanızı otomatik olarak doğru çerçeveye değiştirmelidir.

Ayrıca (Ocak '16) şimdilik fark GoDaddyile çalışır ASP.Net 3.5ve 4.5.2. 4.5.2Visual Studio ile kullanmak için olması 2012veya daha yeni olması gerekir ve 2015 değilse, .NET Framework 4.5.2 Geliştirici Paketini indirip yüklemeniz gerekir.

Hala çalışmıyorsa, evet, sonraki adımınız hata ayıklayabilmeniz için ayrıntılı hata raporlamayı etkinleştiriyor olmalıdır.


0

Geçenlerde aynı sorunla karşılaştım, disk alanı sunucuda doluydu. Biraz yer açmak sorunu çözdü.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.