ASP.NET 응용 프로그램을 배포하려고합니다. 사이트를 IIS에 배포했지만 브라우저를 사용하여 사이트를 방문하면 다음과 같이 표시됩니다.
서버 오류
500 내부 서버 오류.
찾고있는 리소스에 문제가있어 표시 할 수 없습니다.
web.config로 둘러 본 후 나는
내부 서버 오류가 발생하여 페이지를 표시 할 수 없습니다.
이 서버 오류의 실제 문제를 어떻게 확인할 수 있습니까?
ASP.NET 응용 프로그램을 배포하려고합니다. 사이트를 IIS에 배포했지만 브라우저를 사용하여 사이트를 방문하면 다음과 같이 표시됩니다.
서버 오류
500 내부 서버 오류.
찾고있는 리소스에 문제가있어 표시 할 수 없습니다.
web.config로 둘러 본 후 나는
내부 서버 오류가 발생하여 페이지를 표시 할 수 없습니다.
이 서버 오류의 실제 문제를 어떻게 확인할 수 있습니까?
답변:
먼저 웹 메시지의 자세한 오류를 활성화하고 확인해야 합니다. 이는 보안상의 이유로 실제로 발생하는 정보를 제공하지 않는 일반적인 메시지이므로 웹 메시지의 자세한 오류 를 확인해야합니다.
자세한 오류가 있으면 여기에서 실제 문제를 찾을 수 있습니다.
또한 서버에서 브라우저를 실행할 수있는 경우 서버는 사용자가 로컬임을 인식하여 사용자에게 표시하므로 오류에 대한 세부 사항을 얻습니다. 또는 이벤트 뷰어를 사용하여 서버 의 로그 를 읽을 수있는 경우 오류 세부 사항도 볼 수 있습니다.
<configuration>
<system.web>
<customErrors mode="Off"/>
<compilation debug="true"/>
</system.web>
</configuration>
<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로부터) 자세한 오류 메시지를 활성화하는 방법 .
run the browser on the server
나를 위해 일했다. 감사합니다 형제
나에게 web.config의 다음 코드가 범인이었습니다. 그것을 제거했을 때 웹 사이트는 잘 작동했습니다.
<staticContent>
<mimeMap fileExtension=".mp4" mimeType="video/mp4" />
</staticContent>
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에 게시했습니다.
그것은 효과가 있었고 마침내 내 문제가 해결되었습니다.
제 경우에는 제 web.config
파일에 실수를했습니다 . 애플리케이션 키는 어떻게 든 <appSettings> 태그 아래에 있습니다. 그러나 왜 구성 오류가 표시되지 않는지 궁금합니다. 오류 500은 문제를 조사하기에는 너무 일반적입니다.
서버 오류 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>
내 문제를 해결했습니다.
IIS 8의 경우 오류 내용을 표시하기 위해 customErrors = Off를 변경하는 것 이외의 추가 단계가 있습니다.
<system.web>
<customErrors mode="Off" />
</system.web>
<system.webServer>
<httpErrors existingResponse="PassThrough" errorMode="Detailed"/>
</system.webServer>
Raul은이 링크의 질문에 답변했습니다. Raul의 IIS8 사용자 지정 오류 해제
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>
서버의 파일 및 폴더에 대한 권한도 중요하다는 것을 깨달았습니다. Linux 운영 체제에서 파일을 업로드했으며 일반적으로 사용 권한은 읽기 및 쓰기로 제한됩니다. 따라서 업로드 할 때 권한은 여전히 로컬 시스템과 동일합니다.
나는 같은 오류가 있었고 방금 업로드 한 폴더의 권한을 변경했으며 오류가 사라졌습니다.
그것이 누군가를 돕기를 바랍니다.
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>
사용자 정의 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
.
몇 가지 이유로 500 내부 서버 오류가 발생할 수 있습니다. 첫 번째 이유는 web.config 파일이 제대로 작성되지 않았기 때문에 web.config 파일에서 일부 태그를 놓친 것입니다. 둘째,이 오류는 일부 코드 문제로 인해 발생할 수 있습니다. 이 오류의 원인이되는 웹 응용 프로그램의 구성 요소를 확인하려면 web.config 파일에서 응용 프로그램 설정을 확인할 수 있습니다. 다이어그램으로 500 내부 서버 오류를 해결하고 추적하는 세부 사항은 다음과 같습니다.
계정에서 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.
때로는 서버에 .dll 어셈블리 중 하나가 제대로 등록되지 않았기 때문일 수 있습니다.
예를 들어 서버에 Office 제품군이 설치되어 있지 않기 때문에 서버 배포시 500 오류가 발생하는 동안 Office가 설치된 로컬 컴퓨터에서 C # Excel 웹 응용 프로그램을 성공적으로 실행할 수 있으므로 서버 오류가 발생합니다.
IIS 8.5를 사용하는 경우 ApplicationPool ID 설정을 ApplicationPoolId 에서 NetworkService 로 변경해야 할 수 있습니다.
해당 응용 프로그램 풀을 마우스 오른쪽 단추로 클릭하고 "고급 설정"을 클릭 한 다음 ID 까지 아래로 스크롤하십시오 . 아마도 ApplicationPoolIdentity 로 설정 될 것입니다 . 버튼 (..)을 클릭하고 대신 드롭 다운 목록 에서 NetworkService 를 선택하십시오 .
또한 .NET 2.0 애플리케이션 인 경우 앱 풀에서 4.0 프레임 워크를 참조하지 않는지 확인하십시오.
web.config
파일을 변경하기 전에 .NET Framework
사용 중인 버전이 GoDaddy
설정 ( Plesk panel
. 그러면 web.config 파일이 올바른 프레임 워크로 자동 변경됩니다.
또한 현재 (January '16) GoDaddy
는 ASP.Net 3.5
and 와 함께 작동합니다 4.5.2
. 4.5.2
Visual Studio와 함께 사용하려면 2012
최신 버전이어야하며 2015 년이 아닌 경우 .NET Framework 4.5.2 개발자 패키지를 다운로드하여 설치해야합니다.
그래도 작동하지 않으면 다음 단계에서 자세한 오류보고를 활성화하여 디버깅 할 수 있도록해야합니다.
Visual Studio에서 디버그 모드로 컴파일 해보십시오. 릴리스 모드 인 경우 많은 URL 다시 쓰기 오류를 사용할 수 없습니다.