การปรับใช้เว็บไซต์: 500 - ข้อผิดพลาดเซิร์ฟเวอร์ภายใน


189

ฉันกำลังพยายามปรับใช้แอปพลิเคชัน ASP.NET ฉันปรับใช้ไซต์กับ IIS แต่เมื่อเข้าเยี่ยมชมด้วยเบราว์เซอร์มันจะแสดงสิ่งนี้ให้ฉัน:

เซิร์ฟเวอร์ผิดพลาด

500 ข้อผิดพลาดภายในเซิร์ฟเวอร์.

มีปัญหากับทรัพยากรที่คุณกำลังค้นหาและไม่สามารถแสดงได้

หลังจากเล่นซอกับ web.config ฉันก็:

ไม่สามารถแสดงหน้านี้ได้เนื่องจากมีข้อผิดพลาดภายในเซิร์ฟเวอร์เกิดขึ้น

ฉันจะดูปัญหาที่แท้จริงของข้อผิดพลาดเซิร์ฟเวอร์นี้ได้อย่างไร


1
ตรวจสอบให้แน่ใจว่าคุณมีการจับคู่ไวด์การ์ดสำหรับแอปพลิเคชัน MVC ในไดเรกทอรี ...
sajoshi

คำตอบ:


298

ก่อนอื่นคุณต้องเปิดใช้งานและดูข้อผิดพลาดโดยละเอียดของข้อความเว็บของคุณเพราะนี่เป็นข้อความทั่วไปโดยไม่ต้องให้ข้อมูลว่ามีอะไรเกิดขึ้นจริงด้วยเหตุผลด้านความปลอดภัย

ด้วยข้อผิดพลาดโดยละเอียดคุณสามารถค้นหาปัญหาจริงได้ที่นี่

นอกจากนี้หากคุณสามารถเรียกใช้เบราว์เซอร์บนเซิร์ฟเวอร์คุณจะได้รับรายละเอียดเกี่ยวกับข้อผิดพลาดเนื่องจากเซิร์ฟเวอร์ยอมรับว่าคุณอยู่ในพื้นที่และแสดงให้คุณเห็น หรือถ้าคุณสามารถอ่านบันทึกของเซิร์ฟเวอร์โดยใช้ Event Viewer คุณจะเห็นรายละเอียดข้อผิดพลาดของคุณ

บนIIS 6

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

บน IIS 7

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

หมายเหตุ: คุณสามารถหลีกเลี่ยงการตรวจแก้จุดบกพร่อง = true คุณจะต้องปิดข้อผิดพลาดที่กำหนดเองในขณะที่รับหน้าข้อผิดพลาดโดยละเอียด

การอ้างอิง: การเปิดใช้งานการส่งข้อความผิดพลาดที่กำหนดเองของ Windowsในบทความช่วยเหลือของ Go Daddy

นอกจากนี้ยังสามารถช่วย: วิธีเปิดใช้งานข้อความแสดงข้อผิดพลาดโดยละเอียด (จาก IIS)


9
ขอบคุณสำหรับการโพสต์! ส่วนที่ทำเพื่อฉันคือ: <httpErrors errorMode = "Detailed" />
jaseeey

@codemonkeyliketab ต้องเหมือนกัน ... หรือคล้ายกัน ... หากคุณเรียกใช้ iis express บนคอมพิวเตอร์ของคุณให้เปิด EventViewer ของคุณ ...
Aristos

4
run the browser on the serverทำงานให้ฉัน .. ขอบคุณพี่ชาย
Rajshekar Reddy

1
@Learning ใช่มี - คุณเปิดใช้งานข้อผิดพลาดโดยละเอียดเพียงช่วงเวลาสั้น ๆ เพื่อหาข้อผิดพลาดบางอย่างของคุณและทำให้แอปของคุณทำงาน - จากนั้นคุณปิดมันอีกครั้ง
Aristos

1
ขอบคุณการเปิดใช้งานข้อความแสดงข้อผิดพลาดอย่างละเอียดจาก IIS ช่วย
Vadim Tofan

25

ฉันดึงผมออกมาจากปัญหานี้ ตรวจสอบให้แน่ใจว่ารายการต่อไปนี้อยู่ในweb.configไฟล์รูทเพื่อแก้ไขให้ฉัน:

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

จำไว้ว่าคุณต้องเพิ่มสิ่งนี้ลงในองค์ประกอบXMLที่มีอยู่หากมีอยู่แล้ว คุณไม่สามารถเพิ่มที่ท้ายไฟล์ได้เพราะคุณไม่สามารถมีองค์ประกอบหลาย ๆ ชุดได้


9

สำหรับฉันรหัสต่อไปนี้ใน web.config คือผู้ร้าย เมื่อฉันลบมันเว็บไซต์ทำงานได้ดี

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

1
ขอบคุณ .. ทำงานสำหรับฉัน แต่ mimeMap นั้นจำเป็นสำหรับการแสดงวิดีโอหรือไม่
panky

9

ในที่สุดฉันก็แก้ไขข้อผิดพลาด "500 Internal server" นี้เมื่อปรับใช้แอปพลิเคชัน ASP.NET MVC 3.0 บนโฮสติ้งที่แชร์ godaddy.ocm

อย่างใดมีความแตกต่างกับรุ่นของ DLL web.configไฟล์อ้างอิงและรุ่นที่กล่าวไว้ในไฟล์

ฉันลองตัวเลือกทั้งหมดที่กล่าวถึงในฟอรัมต่างๆ ไม่มีอะไรช่วยแม้ว่าทุกคนจะเสนอวิธีการแก้ไขแบบเดียวกัน แต่อย่างใดมันก็ไม่ทำงานในสถานการณ์ของฉัน ในที่สุดหลังจากตีหัวฉันเป็นเวลาสองวัน ฉันตัดสินใจที่จะลบการอ้างอิงไฟล์ DLL ทั้งหมดและลบ web.cofig (ทำสำเนาในเครื่อง) จากโครงการและปล่อยให้แอปพลิเคชันโยนข้อผิดพลาดแล้วเพิ่มไฟล์ DLL ทีละไฟล์เพื่อทำสำเนา = local

หลังจากเพิ่มไฟล์ DLL ทั้งหมดแล้วฉันสร้างแอปพลิเคชัน ASP.NET MVC ใหม่และคัดลอก web.config ของแอปพลิเคชันใหม่ไปยังแอปพลิเคชันจริงของฉัน ดังนั้นแอปพลิเคชันจริงของฉันในขณะนี้มี web.config ใหม่จากนั้นฉันคัดลอก connectionstring และการอ้างอิงอื่น ๆ จากสำเนา web.config ในเครื่องที่ฉันบันทึกไว้

ฉันเพิ่งรวบรวมแอปพลิเคชันและเผยแพร่ไปยังโฟลเดอร์ท้องถิ่นและ FTP โฟลเดอร์ที่เผยแพร่ไปยัง goDaddy

มันได้ผลและในที่สุดปัญหาของฉันก็ถูกแก้ไข


ข้อผิดพลาดของฉันแก้ไขโดย: stackoverflow.com/questions/11359957/…ยังต้องติดตั้ง Elmah
ต่อ G

7

ในกรณีของฉันฉันใส่ผิดในweb.configไฟล์ของฉัน คีย์แอปพลิเคชันจะอยู่ภายใต้แท็ก <appSettings> แต่ฉันสงสัยว่าทำไมมันไม่แสดงข้อผิดพลาดของการกำหนดค่า ข้อผิดพลาด 500 นั้นกว้างเกินไปสำหรับการตรวจสอบปัญหา


เพิ่งมีเหมือนกันที่นี่ web.config ถูกคัดลอกไปยังไดเรกทอรีย่อยโดยไม่ตั้งใจและทำให้เกิดความผิดพลาดแบบ weired แม้ว่าฉันจะตั้งค่า "แสดงรายละเอียดข้อผิดพลาด" เป็นจริง
Avni Yayin

7

ความพยายามครั้งแรกของฉันในการเผยแพร่และเรียกใช้ไซต์ที่ให้บริการ HTML อย่างง่ายเพียงอย่างเดียวที่ผลิต "ไม่สามารถแสดงหน้าเว็บได้เนื่องจากข้อผิดพลาดของเซิร์ฟเวอร์ภายในเกิดขึ้น"

ปัญหา: ฉันตั้งค่าเว็บไซต์เป็น. NET 3.5 ใน Visual Studio (คลิกขวาที่เว็บไซต์โครงการ -> หน้าคุณสมบัติ -> สร้าง) แต่มีเว็บไซต์ใน Azure ที่กำหนดค่าเป็น. NET 4.0 อ๊ะ! ฉันเปลี่ยนเป็น 3.5 ใน Azure และใช้งานได้


5

นอกเหนือจากคำแนะนำอื่น ๆ ตรวจสอบให้แน่ใจว่าได้เปลี่ยนexistingResponseแอ็ตทริบิวต์ของhttpErrorsโหนดเป็นAutoจากReplaceหรือเพื่อลบคุณสมบัตินั้นทั้งหมด

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

4

IIS ยังรายงานรหัสสถานะ 500 โดยไม่มีคำแนะนำบันทึกเหตุการณ์หากมีสิทธิ์ไม่เพียงพอในไดเรกทอรีภายในบ้าน (เช่น IIS_IUSRS ไม่มีสิทธิ์เข้าถึง)


3

เซิร์ฟเวอร์ผิดพลาด 500 - ข้อผิดพลาดเซิร์ฟเวอร์ภายใน มีปัญหากับทรัพยากรที่คุณกำลังค้นหาและไม่สามารถแสดงได้ Goddady โฮสติ้ง - เว็บ - เศรษฐกิจ - Windows Plesk

ในกรณีของฉันฉันแทนที่รหัสนี้:

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

จากนั้นเปลี่ยนเฟรม 3.5 เป็นเฟรมเวิร์ก 4 ซึ่งแสดงข้อผิดพลาดโดยละเอียดของฉัน ฉันจะลบรหัสใน:

<httpModules></httpModules>

มันแก้ไขปัญหาของฉัน


3

สำหรับ IIS 8มีขั้นตอนเพิ่มเติมนอกเหนือจากการเปลี่ยน customErrors = Off เพื่อแสดงเนื้อหาข้อผิดพลาด

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

Raul ตอบคำถามในลิงค์นี้ปิดข้อผิดพลาดที่กำหนดเอง IIS8 โดย Raul


คุณพลาดการปิด / หลัง "รายละเอียด"
manuel-84

วิธีนี้เป็นสิ่งที่จำเป็นสำหรับ IIS 10.0.14393.0
Marcus Parsons

2

อาจเป็นไฟล์ web.config ของคุณผิดหรือไม่มีแท็ก ฉันแก้ไขปัญหาโดยใช้แท็กปรับแต่งที่ถูกต้องสำหรับ. 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

ฉันตระหนักถึงสิทธิ์สำหรับไฟล์และโฟลเดอร์ในเซิร์ฟเวอร์ของคุณด้วย ฉันอัพโหลดไฟล์ของฉันจากระบบปฏิบัติการ linux และโดยปกติการอนุญาตจะ จำกัด สำหรับการอ่านและเขียน ดังนั้นเมื่ออัพโหลดแล้วการอนุญาตจะยังคงเหมือนเดิมในเครื่องโลคอล

ฉันมีข้อผิดพลาดเดียวกันและฉันเพิ่งเปลี่ยนการอนุญาตสำหรับโฟลเดอร์ที่ฉันอัปโหลดและข้อผิดพลาดได้หายไป

หวังว่าจะช่วยใครซักคน


คำตอบนี้ไม่เหมือนกับคำตอบนี้ตั้งแต่เดือนกรกฎาคม 2014ใช่หรือไม่
Wai Ha Lee

1

500 ข้อผิดพลาดภายใน
Windows โฮสติ้งข้อผิดพลาด

ปัญหา Godaddy Hosting

ฉันประสบปัญหาเดียวกัน แต่ตอนนี้ปัญหาของฉันได้รับการแก้ไขแล้ว ใช้ในการโฮสต์นี้เสมอมันใช้งานได้

ฉันจะแนะนำให้คุณทำสิ่งที่คุณต้องการจะเปลี่ยนแปลงในไฟล์ web.config โปรดทำทีละหนึ่งและทดสอบเหมือนกันในโดเมนสดเพื่อให้คุณสามารถค้นหาปัญหาที่แน่นอนหรือคุณสมบัติที่ผู้ให้บริการโฮสต์ของคุณไม่อนุญาตให้คุณใช้

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

ในกรณีของฉันข้อผิดพลาดเกิดจาก <httpRuntime enableVersionHeader = "false" /> ใน web.config
b3wii

1

หากคุณใช้ HttpHandler ที่กำหนดเอง (เช่นการนำไปใช้IHttpModule) ตรวจสอบให้แน่ใจว่าคุณกำลังตรวจสอบการโทรไปยังErrorวิธีการ

คุณอาจให้ผู้ดูแลของคุณโยนของจริงHttpExceptions(ซึ่งมีMessageคุณสมบัติที่มีประโยชน์) ในระหว่างการดีบักแบบนี้:

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

InnerExceptionยังให้แน่ใจว่าการตรวจสอบของข้อยกเว้น


1

ข้อผิดพลาดภายในเซิร์ฟเวอร์ 500 อาจเกิดขึ้นได้จากหลายสาเหตุ เหตุผลแรกอาจเป็นเพราะไฟล์ web.config ไม่ได้ถูกสร้างขึ้นอย่างถูกต้องหมายความว่าคุณพลาดแท็กบางส่วนในไฟล์ web.config ประการที่สองข้อผิดพลาดนี้อาจเกิดจากปัญหารหัส ในการตรวจสอบว่าองค์ประกอบใดของเว็บแอปพลิเคชันที่ทำให้เกิดข้อผิดพลาดนี้คุณสามารถตรวจสอบการตั้งค่าแอปพลิเคชันในไฟล์ web.config รายละเอียดของการแก้ไขและติดตาม 500 ข้อผิดพลาดภายในเซิร์ฟเวอร์พร้อมไดอะแกรมมีให้ที่นี่:


การลงทะเบียนโดเมนนี้หมดอายุในวันที่ 2015/06/15
Patricia

ลิงก์กำลังให้บริการมัลแวร์ ฉันได้ลบลิงก์
Liam

0

ตรวจสอบให้แน่ใจว่าบัญชีของคุณใช้ IIS 7 สำหรับข้อมูลเพิ่มเติมให้ดูที่การกำหนดการตั้งค่า IIS เองในบัญชีโฮสติ้ง Windows ของคุณ ทำตามคำแนะนำในการเปลี่ยนโหมดไปป์ไลน์ในบัญชีโฮสติ้ง Windows IIS 7 ของคุณ เลือกโหมดไปป์ไลน์ ในส่วนการอ้างอิงโครงการของคุณตั้งค่าการคัดลอกโลคัลเป็น True สำหรับแอสเซมบลีต่อไปนี้:

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

เพิ่มแอสเซมบลีต่อไปนี้ไปยังโครงการของคุณและจากนั้นตั้งค่าการคัดลอกภายในเครื่องเป็น True:

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

0

บางครั้งเหตุผลอาจเป็นหนึ่งในแอสเซมบลี. dll ของคุณไม่ได้ลงทะเบียนอย่างถูกต้องบนเซิร์ฟเวอร์

ตัวอย่างเช่นคุณสามารถเรียกใช้เว็บแอปพลิเคชัน C # Excel บนเครื่องท้องถิ่นของคุณโดยติดตั้ง Office ในขณะที่รับข้อผิดพลาด 500 ในการปรับใช้เซิร์ฟเวอร์เนื่องจากไม่มีชุดโปรแกรม Office ติดตั้งบนเซิร์ฟเวอร์และทำให้คุณได้รับข้อผิดพลาดเซิร์ฟเวอร์


0

สำหรับผู้ที่มีโอกาสนี้ (โฮสติ้ง VPS ไม่ใช่เว็บโฮสติ้ง):

เชื่อมต่อกับเซิร์ฟเวอร์โฮสต์ของคุณผ่าน Remote Desktop เปิดเว็บเบราว์เซอร์จากเดสก์ท็อประยะไกลของคุณแล้วคุณจะเห็นคำอธิบายรายละเอียดของข้อผิดพลาด

คุณไม่จำเป็นต้องแก้ไข web.config หรือเปิดเผยรายละเอียดใด ๆ กับบุคคลอื่น


0

หากคุณใช้ IIS 8.5 อาจเป็นเพราะคุณต้องเปลี่ยนการตั้งค่า ApplicationPool ID จากApplicationPoolIdเป็นNetworkService

คลิกขวาที่แอพลิเคชันในคำถามคลิกที่ "การตั้งค่าขั้นสูง" แล้วเลื่อนลงไปID - มันอาจจะถูกตั้งค่าApplicationPoolIdentity คลิกที่ปุ่ม (.. ) แล้วเลือกNetworkServiceจากรายการแบบเลื่อนลงแทน

ตรวจสอบให้แน่ใจด้วยว่าหากเป็นแอปพลิเคชั่น. NET 2.0 ที่คุณไม่ได้อ้างถึงเฟรมเวิร์ก 4.0 ในกลุ่มแอพของคุณ


0

ก่อนที่จะเปลี่ยนweb.configไฟล์ฉันจะตรวจสอบว่า.NET Frameworkรุ่นที่คุณใช้นั้นถูกต้องหรือไม่ (ฉันหมายถึง 4.5! = 4.5.2) เหมือนกันเมื่อเทียบกับGoDaddyการตั้งค่าของคุณ(การตั้งค่า ASP.Net ในของคุณPlesk panel) ควรเปลี่ยนไฟล์ web.config ของคุณเป็นเฟรมเวิร์กที่ถูกต้องโดยอัตโนมัติ

นอกจากนี้ยังสังเกตเห็นว่าตอนนี้ ( ม.ค. '16) GoDaddyทำงานร่วมกับและASP.Net 3.5 4.5.2เมื่อต้องการใช้4.5.2กับ Visual Studio ต้องเป็น2012หรือใหม่กว่าและหากไม่ใช่ปี 2558 คุณต้องดาวน์โหลดและติดตั้ง. NET Framework 4.5.2 แพ็คเกจนักพัฒนา

หากยังไม่ทำงานใช่แล้วขั้นตอนต่อไปของคุณควรเปิดใช้งานการรายงานข้อผิดพลาดโดยละเอียดเพื่อให้คุณสามารถดีบักได้


0

ฉันเพิ่งเจอปัญหาเดียวกันพื้นที่ดิสก์เต็มบนเซิร์ฟเวอร์ การล้างพื้นที่เพื่อแก้ไขปัญหา


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.