Trang web triển khai: 500 - Lỗi máy chủ nội bộ


189

Tôi đang cố gắng triển khai một ứng dụng ASP.NET. Tôi đã triển khai trang web lên IIS, nhưng khi truy cập nó bằng trình duyệt, nó cho tôi thấy điều này:

Lỗi máy chủ

500 - Lỗi máy chủ nội bộ.

Có một vấn đề với tài nguyên bạn đang tìm kiếm và nó không thể được hiển thị.

Sau khi loay hoay với web.config, tôi nhận được:

Trang này không thể được hiển thị vì đã xảy ra lỗi máy chủ nội bộ.

Làm thế nào tôi có thể thấy vấn đề thực sự đằng sau lỗi máy chủ này?


1
Đảm bảo rằng bạn có ánh xạ ký tự đại diện cho ứng dụng MVC trên thư mục ...
sajoshi

Câu trả lời:


297

Trước tiên, bạn cần kích hoạt và xem các lỗi chi tiết của tin nhắn web của mình, vì đây là thông báo chung mà không cung cấp thông tin về những gì thực sự xảy ra vì lý do bảo mật.

Với lỗi chi tiết, bạn có thể xác định vấn đề thực sự ở đây.

Ngoài ra, nếu bạn có thể chạy trình duyệt trên máy chủ , bạn sẽ nhận được thông tin chi tiết về lỗi, bởi vì máy chủ nhận ra rằng bạn là người địa phương và hiển thị nó cho bạn. Hoặc nếu bạn có thể đọc nhật ký của máy chủ bằng Trình xem sự kiện, bạn cũng sẽ thấy chi tiết về lỗi của mình.

Trên IIS 6

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

Trên IIS 7

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

Lưu ý: Bạn có thể tránh Debug = true . Bạn chỉ cần đóng các lỗi tùy chỉnh trong một thời gian và nhận trang lỗi chi tiết.

Tham khảo: Kích hoạt tính năng nhắn tin lỗi tùy chỉnh của Windows trong các bài viết trợ giúp của Go Daddy .

Ngoài ra, điều này có thể giúp: Cách bật thông báo lỗi chi tiết (từ IIS).


9
Cảm ơn vì bài đăng! Phần đã làm điều đó cho tôi là: <httpErrors errorMode = "Chi tiết" />
jaseeey

@codemonkeyliketab Phải giống nhau ... hoặc tương tự ... nếu bạn chạy iis express trên máy tính, hãy mở EventViewer của bạn ...
Aristos

4
run the browser on the serverlàm việc cho tôi .. cảm ơn anh trai
Rajshekar Reddy

1
@ Học có, có - bạn chỉ kích hoạt lỗi chi tiết trong một khoảng thời gian ngắn để có thể tìm thấy một số lỗi của mình và khiến ứng dụng của bạn chạy - sau đó bạn đóng lại
Aristos

1
Cảm ơn, cho phép thông báo lỗi chi tiết từ IIS đã giúp.
Vadim Tofan

25

Tôi đã kéo tóc ra về vấn đề này. Đảm bảo mục nhập sau trong web.configtệp gốc đã sửa nó cho tôi:

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

Hãy nhớ rằng bạn phải thêm phần này vào các phần tử XML hiện có , nếu chúng đã ở đó. Bạn không thể chỉ thêm vào cuối tệp, vì bạn không thể có nhiều bản sao của bất kỳ yếu tố nào.


9

Đối với tôi, đoạn mã sau trong web.config là thủ phạm. Khi tôi gỡ bỏ nó, trang web hoạt động tốt.

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

1
Cảm ơn .. đã làm việc cho tôi nhưng mimeMap có cần thiết để hiển thị video không?
panky sharma

9

Cuối cùng tôi đã giải quyết lỗi "500 Internal server" này khi triển khai ứng dụng ASP.NET MVC 3.0 trên lưu trữ chia sẻ godaddy.ocm.

bằng cách nào đó có sự khác biệt về phiên bản của tệp DLL được tham chiếu và phiên bản được đề cập trong tệp web.config.

Tôi đã thử tất cả các tùy chọn được đề cập trong các diễn đàn khác nhau. Không có gì giúp được, mặc dù mọi người đều đề xuất loại sửa chữa tương tự, nhưng bằng cách nào đó nó không hoạt động trong kịch bản của tôi. Cuối cùng sau khi đập đầu tôi hai ngày. Tôi quyết định xóa tất cả các tham chiếu tệp DLL và xóa web.cofig (tạo một bản sao cục bộ) khỏi dự án và để ứng dụng ném lỗi và sau đó thêm từng tệp DLL từng bản sao vào local = true.

Sau khi tất cả các tệp DLL được thêm vào, tôi đã tạo một ứng dụng ASP.NET MVC mới và sao chép web.config của ứng dụng mới vào ứng dụng thực tế của tôi. Vì vậy, ứng dụng thực tế của tôi bây giờ có một web.config mới, và sau đó tôi đã sao chép chuỗi kết nối và các tham chiếu khác từ bản sao cục bộ của web.config mà tôi đã lưu.

Tôi vừa biên dịch ứng dụng và xuất bản vào một thư mục cục bộ và FTP thư mục đã xuất bản thành goDaddy.

Nó đã làm việc và cuối cùng vấn đề của tôi đã được giải quyết.


Lỗi của tôi được khắc phục bằng cách: stackoverflow.com/questions/11359957/ cũng cũng phải cài đặt Elmah
Per G

7

Trong trường hợp của tôi, tôi đặt một lỗi trong web.configtập tin của tôi . Khóa ứng dụng bằng cách nào đó đã được đặt trong thẻ <appSinstall>. Nhưng tôi tự hỏi tại sao nó không hiển thị một lỗi cấu hình. Lỗi 500 quá chung chung để điều tra vấn đề.


Chỉ cần có cùng ở đây. web.config đã bị sao chép nhầm sang thư mục con và gây ra lỗi sai mặc dù tôi đặt "hiển thị lỗi chi tiết" thành đúng.
Avni Yayin

7

Lần đầu tiên tôi cố gắng xuất bản và sau đó chạy một trang web rất đơn giản chỉ phục vụ HTML được tạo ra "Trang không thể hiển thị vì đã xảy ra lỗi máy chủ nội bộ."

Vấn đề: Tôi đã đặt trang web thành .NET 3.5 trong Visual Studio (dự án trang web nhấp chuột phải -> Trang thuộc tính -> Xây dựng), nhưng có Trang web trong Azure được định cấu hình là .NET 4.0. Giáo sư! Tôi đã thay đổi nó thành 3,5 trong Azure và nó đã hoạt động.


5

Ngoài các đề xuất khác, hãy đảm bảo thay đổi existingResponsethuộc tính của httpErrorsnút thành Autotừ Replacehoặc loại bỏ hoàn toàn thuộc tính đó.

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

4

IIS cũng báo cáo mã trạng thái 500 mà không có bất kỳ gợi ý nhật ký sự kiện nào nếu không có đủ quyền trên thư mục nhà vật lý (ví dụ: IIS_IUSRS không có quyền truy cập).


3

Lỗi máy chủ 500 - Lỗi máy chủ nội bộ. Có một vấn đề với tài nguyên bạn đang tìm kiếm và nó không thể được hiển thị. Trời ơi. Lưu trữ - Web - Kinh tế - Windows Plesk

Trong trường hợp của tôi, tôi thay thế mã này:

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

Sau đó thay đổi khung 3.5 thành khung 4. Nó hiển thị lỗi chi tiết của tôi. Tôi xóa mã trong:

<httpModules></httpModules>

Nó giải quyết vấn đề của tôi.


3

Đối với IIS 8 Có một bước bổ sung khác ngoài việc thay đổi customErrors = Off để hiển thị nội dung lỗi.

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

Raul đã trả lời câu hỏi trong liên kết này Tắt các lỗi tùy chỉnh IIS8 của Raul


bạn đã bỏ lỡ việc đóng / sau "Chi tiết"
manuel-84

Giải pháp này là những gì cần thiết cho IIS 10.0.14393.0.
Marcus Parsons

2

Có thể tệp web.config của bạn bị sai hoặc thiếu một số thẻ. Tôi đã giải quyết vấn đề của mình bằng cách sử dụng các thẻ cấu hình chính xác cho .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

Tôi nhận ra các quyền cho các tệp và thư mục trong máy chủ của bạn cũng có vấn đề. Tôi đã tải lên các tệp của mình từ một hệ điều hành linux và thông thường các quyền được giới hạn để đọc và ghi. Vì vậy, khi tải lên, quyền vẫn giống như trong máy cục bộ.

Tôi đã có cùng một lỗi và tôi chỉ thay đổi quyền cho thư mục tôi đã tải lên và lỗi đã biến mất.

Hy vọng nó sẽ giúp được ai đó.


Không phải câu trả lời này về cơ bản giống như câu trả lời này từ tháng 7 năm 2014 ?
Wai Ha Lee

1

500 Lỗi nội bộ Lỗi
Windows Hosting Lỗi

Godaddy Hosting

Tôi đã phải đối mặt với cùng một vấn đề, nhưng bây giờ vấn đề của tôi đã được giải quyết. Luôn luôn sử dụng trong lưu trữ này nó hoạt động.

Tôi cũng sẽ đề nghị tất cả các bạn thực hiện bất kỳ thay đổi nào bạn muốn thực hiện trong tệp web.config. Vui lòng làm từng cái một và kiểm tra tương tự trên miền trực tiếp để bạn có thể tìm thấy sự cố chính xác hoặc các tính năng mà nhà cung cấp dịch vụ lưu trữ của bạn không cho phép bạn sử dụng.

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

trong trường hợp của tôi, lỗi là do <httpR.78 enableVersionHeader = "false" /> trong web.config
b3wii

1

Nếu bạn đang sử dụng một httpHandler tùy chỉnh (nghĩa là đang triển khai IHttpModule), hãy đảm bảo bạn đang kiểm tra các cuộc gọi đến Errorphương thức của nó .

Bạn có thể yêu cầu trình xử lý của bạn ném thực tế HttpExceptions(có một thuộc tính hữu ích Message) trong quá trình gỡ lỗi cục bộ như sau:

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

Cũng đảm bảo kiểm tra Ngoại lệ InnerException.


1

500 lỗi máy chủ nội bộ có thể phát sinh do một số lý do. Lý do đầu tiên có thể là tệp web.config không được tạo đúng, có nghĩa là bạn đã bỏ lỡ một số thẻ trong tệp web.config. Thứ hai lỗi này có thể là do một số vấn đề về mã. Để kiểm tra thành phần nào của ứng dụng web gây ra lỗi này, bạn có thể kiểm tra cài đặt Ứng dụng trong tệp web.config. Chi tiết giải quyết và truy tìm 500 lỗi máy chủ nội bộ bằng sơ đồ được đưa ra ở đây:


Đăng ký tên miền này đã hết hạn vào ngày 15 tháng 6 năm 2018.
Patricia

Liên kết hiện đang phục vụ phần mềm độc hại. Tôi đã xóa liên kết
Liam

0

Đảm bảo tài khoản của bạn sử dụng IIS 7. Để biết thêm thông tin, hãy xem Tùy chỉnh cài đặt IIS trên Tài khoản Windows Hosting của bạn. Làm theo các hướng dẫn trong Thay đổi Chế độ Đường ống trên Tài khoản Lưu trữ IIS 7 Windows của bạn. Chọn Chế độ đường ống tích hợp. Trong phần Tài liệu tham khảo dự án của bạn, hãy đặt Sao chép cục bộ thành True cho các cụm sau:

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

Thêm các hội đồng sau vào dự án của bạn, sau đó đặt Copy Local thành True:

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

0

Đôi khi, lý do có thể là một trong các tập hợp của bạn không được đăng ký chính xác trên máy chủ.

Ví dụ: bạn có thể chạy thành công ứng dụng web C # Excel trên máy cục bộ đã cài đặt Office, trong khi gặp lỗi 500 khi triển khai máy chủ, vì không có bộ Office nào được cài đặt trên máy chủ và do đó bạn gặp lỗi máy chủ.


0

Đối với những người có khả năng này (lưu trữ VPS không phải lưu trữ web):

Kết nối với máy chủ lưu trữ của bạn thông qua Remote Desktop. Mở Trình duyệt web từ máy tính để bàn từ xa của bạn và bạn sẽ thấy mô tả chi tiết về lỗi.

Bạn không cần sửa đổi web.config hoặc tiết lộ bất kỳ chi tiết nào cho bất kỳ ai khác.


0

Nếu bạn đang sử dụng IIS 8.5, có thể bạn cần thay đổi cài đặt ID ApplicationPool từ ApplicationPoolId thành NetworkService

Nhấp chuột phải vào Nhóm ứng dụng được đề cập, nhấp vào "Cài đặt nâng cao" và sau đó cuộn xuống ID - có thể nó sẽ được đặt thành ApplicationPoolIdentity . Nhấp vào nút (..) và chọn NetworkService từ danh sách thả xuống thay thế.

Đồng thời đảm bảo rằng nếu đó là một ứng dụng .NET 2.0 mà bạn không tham chiếu khung 4.0 trong Nhóm ứng dụng của mình.


0

Trước khi thay đổi web.configtệp, tôi sẽ kiểm tra xem .NET Frameworkphiên bản bạn đang sử dụng có chính xác không (ý tôi là, 4.5! = 4.5.2) giống với GoDaddycài đặt của bạn (cài đặt ASP.Net trong của bạn Plesk panel). Điều đó sẽ tự động thay đổi tệp web.config của bạn sang đúng khung.

Cũng lưu ý rằng bây giờ (16 tháng 1), GoDaddyhoạt động với ASP.Net 3.54.5.2. Để sử dụng 4.5.2với Visual Studio, nó phải 2012hoặc mới hơn và nếu không phải năm 2015, bạn phải tải xuống và cài đặt Gói dành cho nhà phát triển .NET Framework 4.5.2.

Nếu vẫn không hoạt động, thì có, bước tiếp theo của bạn sẽ là bật báo cáo lỗi chi tiết để bạn có thể gỡ lỗi.


0

Gần đây tôi gặp vấn đề tương tự, không gian đĩa đã đầy trên máy chủ. Xóa một số không gian đã giải quyết vấn đề.


0

Một lý do khác có thể là viết lại Url, Chỉ cần xóa / nhận xét phần "viết lại" trong tệp web.config


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.