Làm cách nào để khắc phục sự cố ứng dụng .NET windows khi khởi động với mã Exception: 0xE0434352?


81

Tôi đã xây dựng ứng dụng .NET Windows Forms trong Visual Studio 2010. Tôi cũng đã xây dựng gói thiết lập / cài đặt tương ứng thông qua Visual Studio 2010. Ứng dụng này được xây dựng dưới dạng ứng dụng 32-bit (x86). (Chúng tôi sử dụng các điều khiển Windows Forms của bên thứ ba chỉ dành cho 32 bit).

Tôi có thể chạy gói thiết lập và triển khai thành công đến các môi trường Windows 7 64-bit khác và các hộp Windows XP 32 bit. Ứng dụng đã cài đặt chạy tốt trên những thứ này.

Tuy nhiên, khi tôi cố gắng chạy Windows Server 2008 R2 - 64 bit, ứng dụng bị treo khi khởi động. Nó được cài đặt thành công thông qua trình cài đặt mà không có bất kỳ lỗi nào.

Nó dường như bị treo khi tải ứng dụng. Tôi đặt một hộp thông báo làm dòng đầu tiên trong ứng dụng để xem liệu nó có quá tải hay không. Hộp thông báo không hiển thị, vì vậy tôi cho rằng nó xảy ra trong quá trình tải / init của ứng dụng.

Cho đến nay tôi không tìm thấy nhiều thứ để tiếp tục. Từ Chi tiết tôi thấy như sau:

Exception Code: E0434352

Tôi đã tìm kiếm xung quanh / googled để xem có điều gì rõ ràng không, nhưng tôi không thấy gì cả. Tôi đã thấy một số tham chiếu đến khả năng xảy ra tràn ngăn xếp trong CLR .

Ứng dụng Windows Forms được xây dựng với các tham chiếu sau:

  • DevExpress
  • Điều khiển hồng ngoại Winforms
  • ORACLE DataAccess DLL
  • RabbitMQ

Vấn đề là gì? Làm cách nào để tôi tìm ra điều này? Làm cách nào để gỡ lỗi để có thêm thông tin hữu ích?


Tham chiếu nào trong số những tham chiếu đó sử dụng mã không được quản lý? Chạy WinDbg, tải ứng dụng của bạn và xem có thông tin nào về lỗi được xuất ra không.
keyboardP

Ngoài ra, có thể liên quan nếu nó hóa ra là mô-đun ORACLE: stackoverflow.com/questions/2100955/…
keyboardP

3
Một hộp thư? Nghiêm trọng? Hãy xem qua System.Diagnostics.Debug.
Henk Holterman

Debugger.
Amicable

1
Đã lâu rồi nhưng - Bạn có khắc phục được sự cố không? Tôi có một khách hàng báo cáo hành vi này. Thật khó để tái tạo ở đây trên một máy đang phát triển. Hãy thoải mái và chia sẻ giải pháp của bạn - tôi đoán nó đáng để ủng hộ. Cảm ơn bạn!
điếcjeff

Câu trả lời:


71

0xE0434352 là mã ngoại lệ cho tất cả các ngoại lệ .NET nên sẽ không cho bạn biết nhiều điều. Làm thế nào bạn có mã ngoại lệ này? Nhật ký sự kiện?

Đặt cược tốt nhất của bạn là sử dụng trình gỡ lỗi để có thêm thông tin. Nếu trình gỡ lỗi Visual Studio không giúp bạn, thì bạn có thể cần phải kiểm tra WinDbg với SOS . Xem ở đâyở đây để giới thiệu. Hãy để nó phá vỡ ngoại lệ và xem liệu bạn có thể biết thêm thông tin về lý do tại sao không.

Nếu bạn nghi ngờ đó là sự cố khi tải các hợp ngữ, bạn có thể muốn kiểm tra Fusion Log .


4
trước khi thử trình gỡ lỗi hãy kiểm tra câu trả lời của
Tergiver

79

Nếu bạn nhận được lỗi đó từ Trình xem sự kiện, bạn sẽ thấy một sự kiện lỗi khác (ít nhất một) từ Nguồn ".NET Runtime". Xem thông báo lỗi đó vì nó sẽ chứa Exceptionthông tin.


5
Đó thực sự giúp tôi, cảm ơn, vì vậy tôi đã tìm thấy tôi đã mất tích một trong những phụ thuộc (FileNotFound ngoại lệ)
Pavel K

4

Tôi không chắc liệu điều này có giúp ích được cho ai hay không, nhưng vì đó là vấn đề của tôi, tôi nghĩ điều đáng nói là:

Tôi đã gặp lỗi này và hóa ra là do sự cố với nền tảng mà EXE được xây dựng. Chúng tôi đã xây dựng nó cho x86 và nó cần phải là x64, vì tham chiếu Oracle trong dự án. Khi chúng tôi thực hiện thay đổi đó, vấn đề đã biến mất. Vì vậy, hãy xem nếu bạn có bất kỳ xung đột tương tự.


4

Có vẻ như lỗi này 0xe0434352 áp dụng cho một số lỗi khác nhau.

Trong trường hợp nó giúp ích được cho bất kỳ ai, tôi đã gặp phải lỗi này khi cố gắng cài đặt ứng dụng của mình trên bản cài đặt Windows 10 mới. Nó hoạt động trên các máy khác và có vẻ như ứng dụng sẽ khởi động trong giây lát trước khi chết. Sau nhiều lần thử và gặp lỗi, vấn đề hóa ra là ứng dụng yêu cầu DirectX9. Mặc dù phiên bản DirectX muộn hơn đã có mặt nhưng nó phải có phiên bản 9. Hy vọng điều đó sẽ giúp ai đó bớt thất vọng.


Đây là một trường hợp rất đặc biệt. Không chắc có bao nhiêu người sẽ phải đối mặt với hoàn cảnh cụ thể này.
Eniola

3

Tôi đã đấu tranh với điều này cả ngày để yêu cầu người dùng của tôi chạy các phiên bản gỡ lỗi của phần mềm. Vì có vẻ như nó không chạy dòng đầu tiên. Chỉ là một vụ tai nạn mà không có thông tin.

Sau đó, tôi nhận ra rằng lỗi nằm bên trong InitializeComponent của biểu mẫu.

Cách để có được một ngoại lệ là xóa dòng này (hoặc bình luận nó):

System.Diagnostics.DebuggerStepThrough()

Khi bạn thoát khỏi dòng, bạn sẽ nhận được một ngoại lệ bình thường.


2

Tôi đã nhận được điều này khi ứng dụng được triển khai. Trong trường hợp của tôi, tôi đã chọn "Đây là ứng dụng tin cậy đầy đủ" trên tab bảo mật của dự án và điều đó đã khắc phục sự cố.


3
Đó có thể không phải là cách khắc phục thực sự: bạn có thể muốn thiết lập ứng dụng của mình / các yêu cầu bảo mật của ứng dụng để ứng dụng chạy đúng cách trong môi trường có độ tin cậy trung bình. Nhưng đó là một điểm khởi đầu hữu ích - cảm ơn!
Rup

1

Vấn đề:

Mã ứng dụng .Net dừng trước khi bắt đầu thực thi [Ứng dụng bảng điều khiển hoặc ứng dụng Windows]

Lỗi nhận được: Đã bị hủy bỏ với mã lỗi "E0434352"

Ngoại lệ : Ngoại lệ không xác định

Cảnh 1:

Khi một ứng dụng đã được thực thi, đã sử dụng một số tài nguyên phụ thuộc và những tài nguyên đó vẫn được sử dụng với ứng dụng được thực thi, khi một ứng dụng khác hoặc cùng một exe được kích hoạt từ một số nguồn khác thì một trong các ứng dụng sẽ xảy ra lỗi

Tình huống 2:

Khi một ứng dụng được kích hoạt bởi bộ lập lịch hoặc các công việc tự động, nó có thể ở trạng thái thực thi ở chế độ nền, trong khi đó khi bạn cố gắng kích hoạt lại cùng một ứng dụng, lỗi có thể được kích hoạt.

Giải pháp:

Tạo ứng dụng, khi và ở đâu ứng dụng giải phóng tất cả tài nguyên của nó ngay sau khi hoàn thành Diệt tất cả quy trình nền sau khi ứng dụng bị đóng Kiểm tra và tránh thực thi ứng dụng từ nhiều nguồn như Batch Process, Task Scheduler và các công cụ bên ngoài cùng một lúc. Kiểm tra ứng dụng và các phụ thuộc tài nguyên và xóa mã nếu cần.


Trong trường hợp của tôi, thư mục ứng dụng hoặc các tệp trong đó đã bị khóa / mở - do hệ thống không cho phép đổi tên nó (kiểm tra đơn giản để kiểm tra xem thư mục và các thư mục con còn trống hay đang mở / bị khóa). Sau khi đăng xuất / đăng nhập trên máy chủ một lần nữa, nó phát hành khóa
Kuleris

0

Để khắc phục sự cố cho tôi (vì một số ứng dụng bắt đầu đột ngột ném ngoại lệ này, ví dụ: CorelDraw X6 là một), tôi đã gỡ cài đặt thời gian chạy .NET 4.5 và cài đặt thời gian chạy .NET 4. Hai phiên bản không thể được cài đặt cạnh nhau nhưng chúng sử dụng cùng số phiên bản trong GAC . Điều này gây ra các vấn đề vì một số chức năng đã bị khấu hao trong 4.5.

DLL Hell đã trở lại ...


0

Vì vậy, .. tôi đã nhận thấy trong trình xem sự kiện rằng sự cố này tương ứng với lỗi "System.IO.FileNotFoundException".

Vì vậy, tôi đã kích hoạt ProcMon và nhận thấy rằng một trong những ổ chương trình không tải được vcruntime140. Vì vậy, tôi chỉ cần cài đặt vs15 redist và nó đã hoạt động.


0

Chúng tôi gặp lỗi này khi chuỗi kết nối đến cơ sở dữ liệu của chúng tôi không chính xác. Chìa khóa để tìm ra điều này là chạy dotnet blah.dll cung cấp một stacktrace cho chúng ta thấy rằng không thể tìm thấy phiên bản máy chủ sql được chỉ định. Hy vọng điều này sẽ giúp ai đó.


0

Tôi biết đây là một chủ đề hơi cũ, nhưng tôi cũng gặp sự cố này với ứng dụng ac # / WPF mà tôi đang tạo. Ứng dụng hoạt động tốt trên máy phát triển, nhưng sẽ không khởi động trên máy thử nghiệm. Đăng nhập ứng dụng trong Trình xem sự kiện đã đưa ra một lỗi .NET Runtime hơi ngớ ngẩn của System.IO.DirectoryNotFoundException.

Tôi đã thử sử dụng một số phần mềm gỡ lỗi nhưng ứng dụng sẽ không hoạt động đủ lâu để đính kèm trình gỡ lỗi vào quy trình. Sau khi đập đầu vào bàn trong một ngày và xem nhiều trang web như trang này, điều tôi cố gắng làm để khắc phục sự cố này là cài đặt VS2019 trên máy thử nghiệm của mình. Sau đó, tôi kéo tệp .exe từ thư mục của nó (nó nằm sâu trong thư mục Users [user] \ AppData \ Apps \ 2.0 ...) vào phiên bản VS2019 đang mở và bắt đầu từ đó. Ngay lập tức, nó xuất hiện một hộp thoại đưa ra ngoại lệ và nguyên nhân.

Trong trường hợp của tôi, khi tôi thêm biểu tượng vào một trong các biểu mẫu, đường dẫn hoàn chỉnh đến biểu tượng đã được đặt vào XAML thay vì chỉ tên biểu tượng. Tôi đã sao chép tệp biểu tượng vào thư mục dự án, nhưng vì thư mục dự án không tồn tại trên máy thử nghiệm, đây là nguyên nhân gốc rễ của lỗi. Sau đó, tôi đã xóa đường dẫn khỏi XAML, chỉ để lại tên biểu tượng, xây dựng lại giải pháp và xuất bản lại, và hiện tại nó chạy tốt trên máy thử nghiệm. Tất nhiên có nhiều nguyên nhân bên cạnh những gì đã gây ra lỗi cho tôi, nhưng phương pháp khắc phục sự cố này hy vọng sẽ xác định được nguyên nhân gốc rễ của lỗi, vì Windows Event Viewer đưa ra câu trả lời hơi mơ hồ.

Tóm lại, hãy sử dụng Visual Studio trên máy thử nghiệm như một trình gỡ lỗi. Tuy nhiên, để nó hoạt động bình thường, tôi phải kéo tệp .exe vào IDE và Bắt đầu (chạy) nó từ đó. Tôi tin rằng điều này cũng sẽ hoạt động với VS2017 cũng như VS2019. Hy vọng rằng điều này sẽ giúp một người nào đó vẫn đang gặp vấn đề này.

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.