웹 사이트 배포 : 500-내부 서버 오류


189

ASP.NET 응용 프로그램을 배포하려고합니다. 사이트를 IIS에 배포했지만 브라우저를 사용하여 사이트를 방문하면 다음과 같이 표시됩니다.

서버 오류

500 내부 서버 오류.

찾고있는 리소스에 문제가있어 표시 할 수 없습니다.

web.config로 둘러 본 후 나는

내부 서버 오류가 발생하여 페이지를 표시 할 수 없습니다.

이 서버 오류의 실제 문제를 어떻게 확인할 수 있습니까?


1
디렉토리에 MVC 응용 프로그램을위한 와일드 카드 맵핑이 있는지 확인하십시오.
sajoshi

답변:


298

먼저 웹 메시지의 자세한 오류를 활성화하고 확인해야 합니다. 이는 보안상의 이유로 실제로 발생하는 정보를 제공하지 않는 일반적인 메시지이므로 웹 메시지의 자세한 오류 를 확인해야합니다.

자세한 오류가 있으면 여기에서 실제 문제를 찾을 수 있습니다.

또한 서버에서 브라우저를 실행할 수있는 경우 서버는 사용자가 로컬임을 인식하여 사용자에게 표시하므로 오류에 대한 세부 사항을 얻습니다. 또는 이벤트 뷰어를 사용하여 서버 의 로그읽을 수있는 경우 오류 세부 사항도 볼 수 있습니다.

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>

참고 : Debug = true를 피할 수 있습니다 . 잠시 동안 사용자 지정 오류 만 닫고 자세한 오류 페이지를 가져와야합니다.

참조 : Go Daddy의 도움말 에서 Windows 사용자 지정 오류 메시지 활성화

또한, 이것은 도움이 될 수 있습니다 : (IIS로부터) 자세한 오류 메시지를 활성화하는 방법 .


9
게시물 주셔서 감사합니다! 나를 위해 그것을했던 부분이었다 <의 httpErrors errorMode = / "상세">
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 sharma

9

godaddy.ocm 공유 호스팅에 ASP.NET MVC 3.0 응용 프로그램을 배포 할 때이 "500 Internal server"오류를 마침내 해결했습니다.

어떻게 든 참조 된 DLL 파일 버전과 file에 언급 된 버전에 불일치가있었습니다 web.config.

다양한 포럼에서 언급 한 모든 옵션을 시도했습니다. 모든 사람이 같은 종류의 수정을 제안했지만 도움이되지는 않았지만 어떻게 든 내 시나리오에서는 작동하지 않았습니다. 마침내 이틀 동안 내 머리를 두드리다. 모든 DLL 파일 참조를 삭제하고 프로젝트에서 web.cofig (로컬 복사본 만들기)를 삭제하고 응용 프로그램에서 오류를 throw 한 다음 DLL 파일을 하나씩 로컬 = true로 복사하여 추가하기로 결정했습니다.

모든 DLL 파일을 추가 한 후 새 ASP.NET MVC 응용 프로그램을 만들고 새 응용 프로그램의 web.config를 실제 응용 프로그램에 복사했습니다. 따라서 실제 응용 프로그램에 새로운 web.config가 생겼으며 저장 한 web.config의 로컬 복사본에서 연결 문자열 및 기타 참조를 복사했습니다.

방금 응용 프로그램을 컴파일하고 로컬 폴더에 게시하고 게시 된 폴더를 FTP로 goDaddy에 게시했습니다.

그것은 효과가 있었고 마침내 내 문제가 해결되었습니다.


내 오류가 해결되었습니다 : stackoverflow.com/questions/11359957/… 또한 Elmah를 설치해야했습니다
Per G

7

제 경우에는 제 web.config파일에 실수를했습니다 . 애플리케이션 키는 어떻게 든 <appSettings> 태그 아래에 있습니다. 그러나 왜 구성 오류가 표시되지 않는지 궁금합니다. 오류 500은 문제를 조사하기에는 너무 일반적입니다.


여기서도 똑 같았습니다. web.config가 실수로 하위 디렉토리에 복사되었으며 "세부 오류 표시"를 true로 설정했지만 오류가 발생했습니다.
Avni Yayin

7

HTML 만 제공하는 매우 간단한 사이트를 게시 한 다음 실행하려는 첫 번째 시도는 "내부 서버 오류가 발생하여 페이지를 표시 할 수 없습니다."

문제 : Visual Studio에서 사이트를 .NET 3.5로 설정했지만 (웹 사이트 프로젝트-> 속성 페이지-> 빌드를 마우스 오른쪽 버튼으로 클릭) Azure의 웹 사이트를 .NET 4.0으로 구성했습니다. 죄송합니다! Azure에서는 3.5로 변경했으며 작동했습니다.


5

다른 제안을뿐만 아니라, 변경 확인 existingResponse의 속성 httpErrors에 노드 Auto에서 Replace, 또는 완전히 그 속성을 제거 할 수 있습니다.

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

4

또한 실제 홈 디렉토리에 대한 권한이 충분하지 않은 경우 IIS는 이벤트 로그 힌트없이 상태 코드 500을보고합니다 (IIS_IUSRS에 액세스 할 수 없음).


3

서버 오류 500-내부 서버 오류 찾고있는 리소스에 문제가있어 표시 할 수 없습니다. 고 다디 호스팅-웹-경제-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은이 링크의 질문에 답변했습니다. Raul의 IIS8 사용자 지정 오류 해제


"Detailed"
manuel-84

이 솔루션은 IIS 10.0.14393.0에 필요한 솔루션이었습니다.
마커스 파슨스

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 년 7 월의 답변 과 동일하지 않습니까?
Wai Ha Lee

1

500 내부 오류
Windows 호스팅 오류

GoDaddy 호스팅 문제

같은 문제에 직면했지만 이제는 문제가 해결되었습니다. 이 호스팅에서 항상 사용하십시오.

또한 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 = "거짓"/> 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 내부 서버 오류를 해결하고 추적하는 세부 사항은 다음과 같습니다.


이 도메인 등록은 2018 년 6 월 15 일에 만료되었습니다.
Patricia

링크가 이제 악성 코드를 제공하고 있습니다. 링크를 제거했습니다
Liam

0

계정에서 IIS 7을 사용하는지 확인하십시오. 자세한 내용은 Windows 호스팅 계정에서 IIS 설정 사용자 지정을 참조하십시오. 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 어셈블리 중 하나가 제대로 등록되지 않았기 때문일 수 있습니다.

예를 들어 서버에 Office 제품군이 설치되어 있지 않기 때문에 서버 배포시 500 오류가 발생하는 동안 Office가 설치된 로컬 컴퓨터에서 C # Excel 웹 응용 프로그램을 성공적으로 실행할 수 있으므로 서버 오류가 발생합니다.


0

이 가능성이있는 사람들 (웹 호스팅이 아닌 VPS 호스팅) :

원격 데스크톱을 통해 호스팅 서버에 연결하십시오. 원격 데스크톱에서 웹 브라우저를 열면 오류에 대한 자세한 설명이 표시됩니다.

web.config를 수정하거나 다른 사람에게 세부 정보를 공개 할 필요가 없습니다.


0

IIS 8.5를 사용하는 경우 ApplicationPool ID 설정을 ApplicationPoolId 에서 NetworkService 로 변경해야 할 수 있습니다.

해당 응용 프로그램 풀을 마우스 오른쪽 단추로 클릭하고 "고급 설정"을 클릭 한 다음 ID 까지 아래로 스크롤하십시오 . 아마도 ApplicationPoolIdentity 로 설정 될 것입니다 . 버튼 (..)을 클릭하고 대신 드롭 다운 목록 에서 NetworkService 를 선택하십시오 .

또한 .NET 2.0 애플리케이션 인 경우 앱 풀에서 4.0 프레임 워크를 참조하지 않는지 확인하십시오.


0

web.config파일을 변경하기 전에 .NET Framework사용 중인 버전이 GoDaddy설정 ( Plesk panel. 그러면 web.config 파일이 올바른 프레임 워크로 자동 변경됩니다.

또한 현재 (January '16) GoDaddyASP.Net 3.5and 와 함께 작동합니다 4.5.2. 4.5.2Visual Studio와 함께 사용하려면 2012최신 버전이어야하며 2015 년이 아닌 경우 .NET Framework 4.5.2 개발자 패키지를 다운로드하여 설치해야합니다.

그래도 작동하지 않으면 다음 단계에서 자세한 오류보고를 활성화하여 디버깅 할 수 있도록해야합니다.


0

최근에 같은 문제가 발생하여 서버의 디스크 공간이 가득 찼습니다. 일부 공간을 비우면 문제가 해결되었습니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.