Microsoft MVP성태의 닷넷 이야기
오류 유형: 456. 닷넷 응용 프로그램 실행 시 0x80131401 예외 발생 [링크 복사], [링크+제목 복사],
조회: 18966
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 

닷넷 응용 프로그램 실행 시 0x80131401 예외 발생

다음과 같은 예외가 발생한다면?

Server Error in '/' Application.
--------------------------------------------------------------------------------

Configuration Error 
Description: An error occurred during the processing of a configuration file required to service this request. Please review the specific error details below and modify your configuration file appropriately. 

Parser Error Message: An error occurred creating the configuration section handler for system.codedom: Loading this assembly would produce a different grant set from other instances. (Exception from HRESULT: 0x80131401)

Source Error: 


An application error occurred on the server. The current custom error settings for this application prevent the details of the application error from being viewed remotely (for security reasons). It could, however, be viewed by browsers running on the local server machine.
 

Source File: C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Config\web.config    Line: 50 


--------------------------------------------------------------------------------
Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.1031 

아쉬운 것은, 어떤 DLL을 로드하다가 실패했는지 알 수 없다는 점입니다. 심지어 이벤트 로그를 살펴봐도,

Event code: 3008 
Event message: A configuration error has occurred. 
Event time: 2018-03-16 오전 9:07:16 
Event time (UTC): 2018-03-16 오전 12:07:16 
Event ID: a144b120efee431783f32b3fb1ffe2f4 
Event sequence: 1 
Event occurrence: 1 
Event detail code: 0 
 
Application information: 
    Application domain: /LM/W3SVC/1053363633/Root-39211-131656324365434624 
    Trust level: Full 
    Application Virtual Path: / 
    Application Path: D:\TestWebSiteV4\ 
    Machine name: win2003test
 
Process information: 
    Process ID: 2616 
    Process name: w3wp.exe 
    Account name: NT AUTHORITY\SYSTEM 
 
Exception information: 
    Exception type: ConfigurationErrorsException 
    Exception message: An error occurred creating the configuration section handler for system.codedom: Loading this assembly would produce a different grant set from other instances. (Exception from HRESULT: 0x80131401) (C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Config\web.config line 50)
   at System.Configuration.BaseConfigurationRecord.EvaluateOne(String[] keys, SectionInput input, Boolean isTrusted, FactoryRecord factoryRecord, SectionRecord sectionRecord, Object parentResult)
   at System.Configuration.BaseConfigurationRecord.Evaluate(FactoryRecord factoryRecord, SectionRecord sectionRecord, Object parentResult, Boolean getLkg, Boolean getRuntimeObject, Object& result, Object& resultRuntimeObject)
   at System.Configuration.BaseConfigurationRecord.GetSectionRecursive(String configKey, Boolean getLkg, Boolean checkPermission, Boolean getRuntimeObject, Boolean requestIsHere, Object& result, Object& resultRuntimeObject)
   at System.Configuration.BaseConfigurationRecord.GetSectionRecursive(String configKey, Boolean getLkg, Boolean checkPermission, Boolean getRuntimeObject, Boolean requestIsHere, Object& result, Object& resultRuntimeObject)
   at System.Configuration.BaseConfigurationRecord.GetSection(String configKey, Boolean getLkg, Boolean checkPermission)
   at System.Configuration.BaseConfigurationRecord.GetSection(String configKey)
   at System.Web.Configuration.HttpConfigurationSystem.GetApplicationSection(String sectionName)
   at System.Web.Configuration.HttpConfigurationSystem.GetSection(String sectionName)
   at System.Web.Configuration.HttpConfigurationSystem.System.Configuration.Internal.IInternalConfigSystem.GetSection(String configKey)
   at System.Configuration.ConfigurationManager.GetSection(String sectionName)
   at System.Configuration.PrivilegedConfigurationManager.GetSection(String sectionName)
   at System.CodeDom.Compiler.CodeDomProvider.get_Config()
   at System.CodeDom.Compiler.CodeDomProvider.GetCompilerInfoForExtensionNoThrow(String extension)
   at System.CodeDom.Compiler.CodeDomProvider.IsDefinedExtension(String extension)
   at System.Web.Compilation.CompilationUtil.GetProviderOptions(Type codeDomProviderType)
   at System.Web.Compilation.CompilationUtil.GetProviderOption(Type codeDomProviderType, String providerOption)
   at System.Web.Compilation.CompilationUtil.GetCompilerVersion(Type codeDomProviderType)
   at System.Web.Compilation.MultiTargetingUtil.GetCSharpCompilerVersion()
   at System.Web.Compilation.MultiTargetingUtil.ValidateCompilerVersionFor40AndAbove()
   at System.Web.Compilation.MultiTargetingUtil.InitializeTargetFrameworkNameFor40AndAbove(String targetFrameworkMoniker)
   at System.Web.Compilation.MultiTargetingUtil.InitializeTargetFrameworkName()
   at System.Web.Compilation.MultiTargetingUtil.EnsureFrameworkNamesInitialized()
   at System.Web.Compilation.BuildManager.Initialize()
   at System.Web.Compilation.BuildManager.InitializeBuildManager()
   at System.Web.HttpRuntime.HostingInit(HostingEnvironmentFlags hostingFlags, PolicyLevel policyLevel, Exception appDomainCreationException)

Loading this assembly would produce a different grant set from other instances. (Exception from HRESULT: 0x80131401)
   at System.Xml.XmlDocument.Load(XmlReader reader)
   at System.Configuration.ErrorInfoXmlDocument.LoadFromConfigXmlReader(ConfigXmlReader reader)
   at System.Configuration.ErrorInfoXmlDocument.CreateSectionXmlNode(ConfigXmlReader reader)
   at System.Configuration.RuntimeConfigurationRecord.RuntimeConfigurationFactory.CreateSectionImpl(RuntimeConfigurationRecord configRecord, FactoryRecord factoryRecord, SectionRecord sectionRecord, Object parentConfig, ConfigXmlReader reader)
   at System.Configuration.RuntimeConfigurationRecord.RuntimeConfigurationFactory.CreateSectionWithFullTrust(RuntimeConfigurationRecord configRecord, FactoryRecord factoryRecord, SectionRecord sectionRecord, Object parentConfig, ConfigXmlReader reader)
   at System.Configuration.RuntimeConfigurationRecord.RuntimeConfigurationFactory.CreateSection(Boolean inputIsTrusted, RuntimeConfigurationRecord configRecord, FactoryRecord factoryRecord, SectionRecord sectionRecord, Object parentConfig, ConfigXmlReader reader)
   at System.Configuration.RuntimeConfigurationRecord.CreateSection(Boolean inputIsTrusted, FactoryRecord factoryRecord, SectionRecord sectionRecord, Object parentConfig, ConfigXmlReader reader)
   at System.Configuration.BaseConfigurationRecord.CallCreateSection(Boolean inputIsTrusted, FactoryRecord factoryRecord, SectionRecord sectionRecord, Object parentConfig, ConfigXmlReader reader, String filename, Int32 line)

 
 
Request information: 
    Request URL: http://localhost:8010/about.aspx 
    Request path: /about.aspx 
    User host address: 127.0.0.1 
    User:  
    Is authenticated: False 
    Authentication Type:  
    Thread account name: NT AUTHORITY\SYSTEM 
 
Thread information: 
    Thread ID: 37 
    Thread account name: NT AUTHORITY\SYSTEM 
    Is impersonating: False 
    Stack trace:    at System.Configuration.BaseConfigurationRecord.EvaluateOne(String[] keys, SectionInput input, Boolean isTrusted, FactoryRecord factoryRecord, SectionRecord sectionRecord, Object parentResult)
   at System.Configuration.BaseConfigurationRecord.Evaluate(FactoryRecord factoryRecord, SectionRecord sectionRecord, Object parentResult, Boolean getLkg, Boolean getRuntimeObject, Object& result, Object& resultRuntimeObject)
   at System.Configuration.BaseConfigurationRecord.GetSectionRecursive(String configKey, Boolean getLkg, Boolean checkPermission, Boolean getRuntimeObject, Boolean requestIsHere, Object& result, Object& resultRuntimeObject)
   at System.Configuration.BaseConfigurationRecord.GetSectionRecursive(String configKey, Boolean getLkg, Boolean checkPermission, Boolean getRuntimeObject, Boolean requestIsHere, Object& result, Object& resultRuntimeObject)
   at System.Configuration.BaseConfigurationRecord.GetSection(String configKey, Boolean getLkg, Boolean checkPermission)
   at System.Configuration.BaseConfigurationRecord.GetSection(String configKey)
   at System.Web.Configuration.HttpConfigurationSystem.GetApplicationSection(String sectionName)
   at System.Web.Configuration.HttpConfigurationSystem.GetSection(String sectionName)
   at System.Web.Configuration.HttpConfigurationSystem.System.Configuration.Internal.IInternalConfigSystem.GetSection(String configKey)
   at System.Configuration.ConfigurationManager.GetSection(String sectionName)
   at System.Configuration.PrivilegedConfigurationManager.GetSection(String sectionName)
   at System.CodeDom.Compiler.CodeDomProvider.get_Config()
   at System.CodeDom.Compiler.CodeDomProvider.GetCompilerInfoForExtensionNoThrow(String extension)
   at System.CodeDom.Compiler.CodeDomProvider.IsDefinedExtension(String extension)
   at System.Web.Compilation.CompilationUtil.GetProviderOptions(Type codeDomProviderType)
   at System.Web.Compilation.CompilationUtil.GetProviderOption(Type codeDomProviderType, String providerOption)
   at System.Web.Compilation.CompilationUtil.GetCompilerVersion(Type codeDomProviderType)
   at System.Web.Compilation.MultiTargetingUtil.GetCSharpCompilerVersion()
   at System.Web.Compilation.MultiTargetingUtil.ValidateCompilerVersionFor40AndAbove()
   at System.Web.Compilation.MultiTargetingUtil.InitializeTargetFrameworkNameFor40AndAbove(String targetFrameworkMoniker)
   at System.Web.Compilation.MultiTargetingUtil.InitializeTargetFrameworkName()
   at System.Web.Compilation.MultiTargetingUtil.EnsureFrameworkNamesInitialized()
   at System.Web.Compilation.BuildManager.Initialize()
   at System.Web.Compilation.BuildManager.InitializeBuildManager()
   at System.Web.HttpRuntime.HostingInit(HostingEnvironmentFlags hostingFlags, PolicyLevel policyLevel, Exception appDomainCreationException)

역시 정보가 없습니다. 메시지에서 의미하는 50 번째 라인은 "C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Config\web.config" 파일에서 다음과 같이 codedom 설정이 시작되는 구간입니다.

<system.codedom>
    <compilers>
        <compiler language="c#;cs;csharp" extension=".cs" warningLevel="4" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
            <providerOption name="CompilerVersion" value="v4.0"/>
            <providerOption name="WarnAsError" value="false"/>
        </compiler>
        <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" warningLevel="4" type="Microsoft.VisualBasic.VBCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
            <providerOption name="CompilerVersion" value="v4.0"/>
            <providerOption name="OptionInfer" value="true"/>
            <providerOption name="WarnAsError" value="false"/>
        </compiler>
    </compilers>
</system.codedom>

이벤트 로그에는 나오지 않지만 "Loading this assembly would produce a different grant set from other instances" 메시지는 System.IO.FileLoadException 예외가 발생했을 때 볼 수 있는 것입니다.




위의 오류가 발생한 이유는 응용 프로그램의 이력을 살펴보는 것으로 해결할 수 있었습니다. 배경을 설명해 보면, .NET 4.5부터 추가된 System.Net.Http.dll 어셈블리를 참조해 Windows Server 2003에 배포한 것입니다. 즉, System.Net.Http.dll 파일을 로드할 수 없어 저런 예외가 발생한 것입니다. (.NET 4.5는 Windows Server 2003을 지원하지 않아 문제가 발생한 환경에서는 System.Net.Http.dll이 없었던 것입니다.)

혹시나 0x80131401 예외가 발생한다면? 해당 머신에 설치되지 않은 구성 요소가 있는지? 또는 새롭게 배포한 프로젝트에 신규로 추가한 참조 어셈블리가 있는지 확인해 보시면 됩니다.





[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]







[최초 등록일: ]
[최종 수정일: 3/20/2018]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




[1]  2  3  4  5  6  7  8  9  10  11  12  13  14  15  ...
NoWriterDateCnt.TitleFile(s)
14000정성태8/18/2025355오류 유형: 979. ERROR: failed to solve: failed to read dockerfile: open Dockerfile: no such file or directory
13999정성태8/15/2025906닷넷: 2355. C# 14 - (8) null 조건부 연산자 개선 - 대입문에도 사용 가능파일 다운로드1
13998정성태8/14/2025929닷넷: 2354. C# 14 - (7) 확장 메서드에 정적 메서드와 속성 지원을 위한 전용 구문 추가파일 다운로드1
13997정성태8/14/20251086Linux: 120. docker 컨테이너로 매핑된 볼륨에 컨테이너 측의 사용자 ID를 유지하면서 복사하는 방법
13996정성태8/13/2025634오류 유형: 978. Unable to find the requested .Net Framework Data Provider.
13995정성태8/13/2025676개발 환경 구성: 754. Visual C++ - 리눅스 빌드를 위한 Ubuntu 18 docker 컨테이너 설정
13994정성태8/12/2025662오류 유형: 977. SQL Server - User, group, or role '...' already exists in the current database. (Microsoft SQL Server, Error: 15023)
13993정성태8/11/20251006오류 유형: 976. Microsoft.ML.OnnxRuntimeGenAI 패키지 사용 시 "cublasLt64_12.dll" which is missing. (Error 126: "The specified module could not be found.") 오류
13992정성태8/11/20251223닷넷: 2353. C# - Foundry Local을 이용한 gpt-oss-20b 모델 사용파일 다운로드1
13991정성태8/9/20251137오류 유형: 975. winget - Foundry Local 패키지 업데이트가 안 되는 문제
13990정성태8/8/2025852Windows: 283. Time zone 설정이 없는 Windows Server 2025
13989정성태8/8/20251253닷넷: 2352. C# - Windows S-mode 환경인지 체크하는 방법파일 다운로드1
13988정성태8/8/20251392오류 유형: 974. 비주얼 스튜디오 업데이트 시 잠김 파일 경고 - Visual Studio Standard Collector Service 150 (VSStandardCollectorService150)
13987정성태8/7/20251057닷넷: 2351. C# 14 - (6) event와 생성자에도 partial 메서드 적용파일 다운로드1
13986정성태8/6/20251152닷넷: 2350. C# 14 - (5) 람다 매개 변수에 접근자가 있는 경우에도 타입 생략 가능파일 다운로드1
13985정성태8/6/20251540오류 유형: 973. "wsl --install" 명령어 수행 시 "The server name or address could not be resolved"
13984정성태8/6/20251270Windows: 282. 윈도우 운영체제에 추가된 ssh 서버(Win32-OpenSSH)
13983정성태8/4/20251369오류 유형: 972. Microsoft.Data.SqlClient 6.1.0 버전부터 .NET 8 이상만 지원
13982정성태8/2/20251803개발 환경 구성: 753. CentOS 7 컨테이너 내에서 openssh 서버 호스팅
13981정성태8/1/20251458오류 유형: 971. CentOS 7에서 yum 사용 시 "Could not resolve host: mirrorlist.centos.org; Unknown error"
13980정성태7/31/20251598Linux: 119. eBPF - BPF_PROG_TYPE_CGROUP_SOCK 유형에서 정상 동작하지 않는 BPF_CORE_READ (2)
13979정성태7/30/20251918Linux: 118. eBPF - BPF_PROG_TYPE_CGROUP_SOCK 유형에서 정상 동작하지 않는 BPF_CORE_READ
13978정성태7/29/20251709오류 유형: 970. 파일 복사 시 "Data error (cyclic redundancy check). (0x80070017)" 에러
13977정성태7/28/20252046닷넷: 2349. C# 14 - (4) 문자열 리터럴을 utf-8 인코딩으로 저장파일 다운로드1
13976정성태7/25/20251879닷넷: 2348. C# - 카카오 카나나 모델 + Microsoft.ML.OnnxRuntimeGenAI 예제파일 다운로드1
[1]  2  3  4  5  6  7  8  9  10  11  12  13  14  15  ...