시작시 예외 코드 : 0xE0434352로 충돌하는 .NET Windows 응용 프로그램을 수정하려면 어떻게해야합니까?


81

저는 Visual Studio 2010에서 .NET Windows Forms 응용 프로그램을 구축했습니다. 또한 Visual Studio 2010을 통해 해당 설정 / 설치 패키지를 구축했습니다. 이것은 32 비트 (x86) 응용 프로그램으로 구축되었습니다. (32 비트 전용 인 타사 Windows Forms 컨트롤을 사용합니다.)

설치 패키지를 실행하고 다른 Windows 7 64 비트 환경 및 32 비트 Windows XP 상자에 성공적으로 배포 할 수 있습니다. 설치된 응용 프로그램은 이들에서 잘 실행됩니다.

그러나 Windows Server 2008 R2-64 비트 를 실행하려고하면 시작시 응용 프로그램이 충돌합니다. 오류없이 설치 프로그램을 통해 성공적으로 설치되었습니다.

응용 프로그램을로드 할 때 충돌하는 것처럼 보입니다. 응용 프로그램의 첫 번째 줄에 메시지 상자를 넣어 로딩이지나 갔는지 확인합니다. 메시지 상자가 표시되지 않으므로 응용 프로그램을로드 / 초기화하는 동안 발생한다고 가정합니다.

지금까지 할 일이 많지 않았습니다. 세부 정보에서 다음을 볼 수 있습니다.

Exception Code: E0434352

나는 명백한 것이 있는지 알아보기 위해 주변을 낚싯 / 구글링했지만 아무것도 보지 못했습니다. CLR 에서 가능한 스택 오버플로에 대한 몇 가지 참조를 보았습니다 .

Windows Forms 애플리케이션은 다음 참조를 사용하여 빌드됩니다.

  • DevExpress
  • Infragistics Winforms 컨트롤
  • 오라클 DataAccess DLL
  • RabbitMQ

이슈가 뭐야? 이것을 알아내는 데 어떻게 접근합니까? 더 유용한 정보를 얻으려면 어떻게 디버그합니까?


이러한 참조 중 비 관리 코드를 사용하는 것은 무엇입니까? 실행 WinDbg하고 애플리케이션을로드하고 오류에 대한 정보가 출력되는지 확인합니다.
keyboardP

또한 ORACLE 모듈로 판명되면 관련이있을 수 있습니다. stackoverflow.com/questions/2100955/…
keyboardP

3
messageBox? 진지한? System.Diagnostics.Debug를 살펴보세요.
Henk Holterman

Debugger.Launch ()는 해당 라인을 실행할 때 Visual Studio 디버거에 프로세스를 연결하라는 메시지를 표시하므로 시작시 프로세스를 연결하기 위해 진입 점 근처에서이 작업을 수행 할 수 있습니다.
Amicable

1
시간이 좀 지났지 만-문제를 고칠 수 있었나요? 이 행동을보고하는 고객이 있습니다. 여기서 개발하는 기계에서 재현하기는 어렵습니다. 부담없이 솔루션을 공유해주세요. 투표 할 가치가있는 것 같습니다. 감사합니다!
deafjeff

답변:


71

0xE0434352는 모든 .NET 예외에 대한 예외 코드 이므로 많은 것을 알려주지 않습니다. 이 예외 코드는 어떻게 얻었습니까? 이벤트 로그?

가장 좋은 방법은 디버거를 사용하여 더 많은 정보를 얻는 것입니다. Visual Studio 디버거가 도움이되지 않습니다 경우에, 당신은 체크 아웃해야합니다 여기서 WinDbgSOS . 소개는 여기여기 를 참조 하십시오 . 예외를 중단하고 이유에 대한 자세한 정보를 얻을 수 있는지 확인하십시오.

어셈블리를로드 할 때 문제라고 생각되면 Fusion Log 를 확인 하십시오 .


4
디버거를 시도하기 전에 Tergiver의 답변을 확인하십시오
Rabolf

82

이벤트 뷰어에서 해당 오류가 발생하는 경우 원본 ".NET 런타임"에서 다른 오류 이벤트 (적어도 하나)가 표시되어야합니다. Exception정보 가 포함되어 있으므로 해당 오류 메시지를 확인하십시오 .


5
정말 도움이되었습니다. 감사합니다. 따라서 종속성 중 하나가 누락되었음을 발견했습니다 (FileNotFound 예외)
Pavel K

4

이것이 누구에게도 도움이 될지 확실하지 않지만 내 문제이기 때문에 언급 할 가치가 있다고 생각합니다.

이 오류가 발생했으며 EXE가 빌드 된 플랫폼의 문제로 판명되었습니다. x86 용으로 빌드했고 프로젝트의 Oracle 참조 때문에 x64 여야했습니다. 우리가 그렇게 변경했을 때 문제는 사라졌습니다. 따라서 유사한 충돌이 있는지 확인하십시오.


4

이 오류 0xe0434352가 여러 다른 오류에 적용되는 것 같습니다.

누구에게나 도움이되는 경우 새 Windows 10 설치에 응용 프로그램을 설치하려고 할 때이 오류가 발생했습니다. 다른 컴퓨터에서도 작동했고 앱이 죽기 전에 잠시 시작되는 것처럼 보였습니다. 많은 시행 착오 끝에 앱에 DirectX9가 필요하다는 것이 문제였습니다. 최신 버전의 DirectX가 있었지만 버전 9가 있어야했습니다. 누군가의 좌절감을 덜어주기를 바랍니다.


이것은 매우 특이한 경우입니다. 이 특정 상황에 얼마나 많은 사람들이 직면 할 것인지 확실하지 않습니다.
Eniola

3

나는 사용자들에게 소프트웨어의 디버그 버전을 실행하도록 요청하면서 하루 종일이 문제와 싸우고있었습니다. 첫 번째 줄을 실행하지 않은 것처럼 보였기 때문입니다. 정보없는 충돌.

그런 다음 오류가 양식의 InitializeComponent 내에 있음을 깨달았습니다.

예외를 얻는 방법은 다음 줄을 제거 (또는 주석 처리)하는 것입니다.

System.Diagnostics.DebuggerStepThrough()

라인을 제거하면 정상적인 예외가 발생합니다.


2

앱이 배포되었을 때 이것을 얻었습니다. 제 경우에는 프로젝트 보안 탭에서 "이것은 완전 신뢰 응용 프로그램입니다"를 선택했고 그로 인해 수정되었습니다.


3
이는 실제 수정이 아닐 수 있습니다. 중간 신뢰 환경에서 제대로 실행되도록 앱 / 보안 요구 사항을 설정하는 것이 좋습니다. 그러나 그것은 유용한 출발점입니다. 감사합니다!
Rup

1

발행물:

.Net 애플리케이션 코드가 실행을 시작하기 전에 중단됨 [콘솔 애플리케이션 또는 Windows 애플리케이션]

수신 된 오류 : 오류 코드 "E0434352"와 함께 중단됨

예외 : 알 수없는 예외

시나리오 1 :

일부 종속 리소스를 사용한 애플리케이션이 이미 실행되고 해당 리소스가 실행 된 애플리케이션과 함께 계속 사용중인 경우 다른 애플리케이션 또는 동일한 exe가 다른 소스에서 트리거되면 앱 중 하나에서 오류가 발생합니다.

시나리오 2 :

애플리케이션이 스케줄러 또는 자동 작업에 의해 트리거되면 백그라운드에서 실행 상태에있을 수 있으며, 같은 애플리케이션을 다시 트리거하려고하면 오류가 트리거 될 수 있습니다.

해결책:

애플리케이션 생성, 언제 어디서 애플리케이션이 완료 되 자마자 모든 리소스를 해제합니다. 애플리케이션이 닫히면 모든 백그라운드 프로세스를 종료합니다. 일괄 프로세스, 작업 스케줄러 및 외부 도구와 같은 여러 소스에서 애플리케이션을 동시에 실행하지 않도록 확인하고 피하십시오. 애플리케이션 및 리소스 종속성을 확인하고 필요한 경우 코드를 정리합니다.


제 경우에는 응용 프로그램 폴더 또는 파일이 잠겼거나 열렸습니다-시스템이 이름을 바꿀 수 없기 때문에 (단순한 테스트 테스트는 폴더 및 하위 폴더가 비어 있거나 열려 있거나 잠겨 있습니다). 서버에서 다시 로그 오프 / 로그온 한 후 잠금 해제
Kuleris

0

저를 위해 문제를 해결하기 위해 (예를 들어 CorelDraw X6이 하나가되는 등 갑자기이 예외가 발생하기 시작하면서) .NET 4.5 런타임을 제거하고 .NET 4 런타임을 설치했습니다. 두 버전은 나란히 설치할 수 없지만 GAC 에서 동일한 버전 번호를 사용합니다 . 이로 인해 일부 기능이 4.5에서 감가 상각되어 문제가 발생합니다.

DLL 지옥 이 돌아 왔습니다 ...


0

그래서 .. 이벤트 뷰어에서이 충돌이 "System.IO.FileNotFoundException"오류에 해당한다는 것을 알았습니다.

그래서 ProcMon 을 시작했고 프로그램 dll 중 하나가 vcruntime140을로드하지 못하는 것을 발견했습니다. 그래서 간단히 vs15 redist를 설치했고 작동했습니다.


0

데이터베이스에 대한 연결 문자열이 올바르지 않을 때이 오류가 발생했습니다. 이를 파악하는 열쇠는 지정된 SQL 서버 인스턴스를 찾을 수 없음을 보여주는 스택 추적을 제공하는 dotnet blah.dll을 실행하는 것이 었습니다. 이것이 누군가를 돕기를 바랍니다.


0

나는 이것이 다소 오래된 스레드라는 것을 알고 있지만 내가 만든 ac # / WPF 앱 에서도이 문제가 발생했습니다. 이 앱은 개발 컴퓨터에서는 제대로 작동했지만 테스트 컴퓨터에서는 시작되지 않았습니다. 이벤트 뷰어의 응용 프로그램 로그에서 System.IO.DirectoryNotFoundException이라는 다소 모호한 .NET 런타임 오류가 발생했습니다.

일부 디버깅 소프트웨어를 사용해 보았지만 앱이 디버거를 프로세스에 연결하기에 충분히 오래 지속되지 않습니다. 하루 동안 책상에 머리를 대고 이와 같은 많은 웹 페이지를 살펴본 후,이 문제를 해결하기 위해 내가 한 일은 테스트 머신에 VS2019를 설치하는 것이 었습니다. 그런 다음 .exe 파일을 해당 폴더 (Users [user] \ AppData \ Apps \ 2.0 ... 폴더에 깊숙이 있음)에서 열린 VS2019 인스턴스로 끌어서 거기에서 시작했습니다. 즉시 예외와 원인을 제공하는 대화 상자가 나타납니다.

필자의 경우 양식 중 하나에 아이콘을 추가했을 때 아이콘 이름 대신 아이콘의 전체 경로가 XAML에 배치되었습니다. 아이콘 파일을 프로젝트 폴더에 복사했지만 프로젝트 폴더가 테스트 시스템에 존재하지 않기 때문에 이것이 오류의 근본 원인이었습니다. 그런 다음 XAML에서 경로를 제거하고 아이콘 이름을 1로 남겨두고 솔루션을 다시 빌드하고 다시 게시했으며 이제 테스트 컴퓨터에서 정상적으로 실행되었습니다. 물론 나에게 오류를 준 것 외에도 많은 원인이 있지만 Windows 이벤트 뷰어가 다소 모호한 대답을 제공하므로이 문제 해결 방법은 오류의 근본 원인을 식별해야합니다.

요약하면 테스트 컴퓨터에서 Visual Studio를 일종의 디버거로 사용합니다. 그러나 제대로 작동하려면 .exe 파일을 IDE로 드래그하고 거기에서 시작 (실행)해야했습니다. 나는 이것이 VS2017뿐만 아니라 VS2019에서도 작동 할 것이라고 믿습니다. 이 문제가 여전히 발생하는 사람에게 도움이되기를 바랍니다.

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