Ứng dụng C # của tôi đang trả lại 0xE0434352 cho Trình lập lịch tác vụ của Windows nhưng nó không bị lỗi


76

Tôi đã viết một vài ứng dụng C # mà tôi đang chạy qua trình lập lịch tác vụ của windows. Chúng đang chạy thành công (như tôi có thể thấy từ các tệp nhật ký mà chúng đang viết) nhưng bộ lập lịch tác vụ windows hiển thị chúng trả về kết quả chạy cuối cùng của 0xE0434352. Có điều gì tôi cần làm trong ứng dụng C # của mình để nó trả về mã thành công cho bộ lập lịch tác vụ windows không?


Nhiệm vụ của bạn làm là gì?
Ta01


Tác vụ thực thi ứng dụng C # của tôi với đối số -a. Ứng dụng đang thực thi như bình thường và nó không gặp sự cố, vì vậy tôi không chắc tại sao có vẻ như bộ lập lịch cửa sổ đang nhận được mã lỗi.
Kynrek

48
Giả định của bạn rằng nó không bị rơi là không đúng. 0xe0434352 là mã ngoại lệ CLR cấp thấp. Tiếp tục bằng cách viết trình xử lý sự kiện cho AppDomain.CurrentDomain.UnhandledException và ghi giá trị của e.ExceptionObject.ToString ()
Hans Passant

5
Cảm ơn Hans, bạn đã chính xác. bài viết này đã giúp tôi thiết lập trình xử lý đồng đều như bạn đã đề xuất msdn.microsoft.com/en-us/library/…
Kynrek

Câu trả lời:


90

Một tùy chọn khác là chỉ cần sử dụng Nhật ký ứng dụng có thể truy cập thông qua Trình xem sự kiện của Windows. Lỗi .Net sẽ được ghi vào Nhật ký ứng dụng.

Bạn có thể xem các sự kiện này tại đây:

Trình xem sự kiện (Cục bộ)> Nhật ký Windows> Ứng dụng


+1: Đây là cách dễ dàng hơn để phát hiện lỗi. Trong trường hợp của tôi, ứng dụng của tôi được cho là gửi email trong một trường hợp ngoại lệ và smtp không được định cấu hình chính xác trong tệp cấu hình. Thậm chí chương trình không bao giờ đi đến khối bắt, lỗi đang xảy ra. Sửa chữa cấu hình đã khắc phục sự cố.
Baz Guvenkaya

3
Nhật ký sự kiện trong trường hợp của tôi bao gồm dấu vết ngăn xếp, thực sự rất hữu ích.

3
Chỉ để hoàn toàn có ý nghĩa, lưu ý rằng có thể có hai lỗi trong bản ghi sự kiện. Đừng chỉ tập trung vào cái mới nhất; cái đầu tiên có thể chứa nhiều thông tin thú vị hơn.
RenniePet 13/09/17

1
Trong Win10 (có thể cả những người khác), đường dẫn trong Event Viewer là: EventViewer / Windows Logs / Application
MikeH

Stacktrace của ngoại lệ NET được đăng nhập dưới nguồn.NET Runtime
riQQ

40

Khi thiết lập công việc trong cửa sổ mới, bạn có hai trường " chương trình / tập lệnh " và " Bắt đầu trong (Tùy chọn) ". Đặt tên chương trình ở vị trí đầu tiên và vị trí chương trình ở vị trí thứ hai. Nếu bạn không làm điều đó và chương trình của bạn bắt đầu không trong thư mục với exe, nó sẽ không tìm thấy các tệp nằm trong đó.


7
Chính xác. Nếu bạn đang sử dụng các đường dẫn tương đối trong mã của mình, bạn cần chỉ định vị trí chương trình. Nó thường là đường dẫn đến tệp exe.
Krisztián Balla

Tôi chỉ muốn chỉ ra rằng điều này rất phản trực quan từ MS.
Carol


12

Tôi đang tham chiếu đến một ổ đĩa được ánh xạ và tôi nhận thấy rằng các ổ đĩa được ánh xạ không phải lúc nào cũng có sẵn cho tài khoản người dùng đang chạy tác vụ đã lên lịch vì vậy tôi đã sử dụng \\IPADDRESSthay thế MAPDRIVELETTER:và tôi thiết lập và chạy.


Tôi đã gặp sự cố tương tự trong đó không thể truy cập đường dẫn mạng UNC (những người dùng khác nhau) và tôi đã thử sử dụng trình quản lý thông tin xác thực để thêm thông tin tài khoản được yêu cầu.
dakab

7

Trong trường hợp nó giúp ích cho người khác, tôi đã gặp lỗi này khi dịch vụ mà tác vụ đang chạy không có quyền ghi vào vị trí thực thi. Nó đang cố gắng ghi một tệp nhật ký ở đó.


Đây là một trong những. Ứng dụng của tôi đang ghi vào một thư mục khác với thư mục mà nó đang chạy.
MartinH

2

Tôi gặp sự cố này và đó là do phiên bản .Net framework. Tôi đã nâng cấp bản dựng lên framework 4.0 nhưng điều này dường như ảnh hưởng đến một số ứng dụng đang sử dụng. Tôi đã quay trở lại framework 3.5 và nó hoạt động tốt.


Tôi cần hạ cấp phiên bản của mình nhưng sau đó tôi gặp lỗi khi cài đặt lại nhiều tệp DLL và trang web của tôi cũng không thể chạy.
baymax

2

Tôi gặp lỗi tương tự nhưng tôi đã sửa nó bằng cách thay đổi đường dẫn đọc tệp từ "ConfigFile.xml" thành AppDomain.CurrentDomain.BaseDirectory.ToString () + "ConfigFile.xml"

Trong trường hợp của tôi, lỗi này do lỗi đường dẫn tệp vì trình quản lý tác vụ bắt đầu chương trình từ "System32" dưới dạng đường dẫn ban đầu nhưng thư mục chúng tôi nghĩ.


1

Tôi đã nhận được thông báo tương tự trong dotNet Core 2.2 bằng MVC 5, tuy nhiên không có gì được ghi vào Windows Event Viewer.

Tôi thấy rằng tôi đã thay đổi sdk Dự án từ Microsoft.NET.Sdk.Webthành Microsoft.NET.Sdk.Razor(được xem trong projects.csprojtệp). Tôi đã thay đổi điều này trở lại và nó hoạt động tốt :)


0

Trong trường hợp của tôi, đó là vì tôi có hộp tin nhắn. Khi tôi nhận xét mã đó ra, nó bắt đầu hoạt động. Tôi nhớ rằng đó có thể là một vấn đề khi tôi xem nhật ký sự kiện như được đề xuất trong chủ đề này. Cảm ơn mọi người!


0

Tôi gặp sự cố này khi làm việc với các đối tượng COM. Trong một số trường hợp nhất định (lỗi của tôi), tôi đã phá hủy một quy trình .EXE bên ngoài, trong một chuỗi song song, một biến đã cố gắng truy cập vào app.method của giao diện com và xảy ra sự cố cấp COM. Task Scheduler nhận thấy điều này và tắt ứng dụng. Nhưng nếu bạn chạy ứng dụng trong bảng điều khiển và không xử lý ngoại lệ, ứng dụng sẽ tiếp tục hoạt động ...

Xin lưu ý rằng nếu bạn sử dụng mã không được quản lý hoặc các đối tượng bên ngoài (AD, Socket, COM ...), bạn cần phải theo dõi chúng!


-1

Đó là vấn đề quyền trong trường hợp của tôi, bộ lập lịch tác vụ có người dùng không có quyền trên máy chủ có cơ sở dữ liệu.

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.