Windowsタスクスケジューラを介して実行しているC#アプリをいくつか作成しました。それらは正常に実行されています(書き込み中のログファイルからわかるように)が、Windowsタスクスケジューラは、0xE0434352
の最後の実行結果を返すことを示しています。 Windowsタスクスケジューラに成功コードを返すために、C#アプリケーションで行う必要があることはありますか?
別のオプションは、Windowsイベントビューアからアクセスできるアプリケーションログを使用することです。 .Netエラーはアプリケーションログに記録されます。
新しいウィンドウでジョブをセットアップする場合、「program/script」と「Start in(Optional)」の2つのフィールドがあります。最初にプログラム名を入れ、2番目にプログラムの場所を入れます。それを行わず、プログラムがexeのあるディレクトリで起動しない場合、その中にあるファイルは見つかりません。
Hans Passantは正しかったので、ここで説明するようにAppDomain.CurrentDomain.UnhandledExceptionのハンドラーを追加しました http://msdn.Microsoft.com/en-us/library/system.appdomain.unhandledexception(v = vs.71) .aspx 発生している例外を見つけて修正できました。
マップされたドライブを参照していましたが、スケジュールされたタスクを実行しているユーザーアカウントでマップされたドライブを常に使用できるとは限らないため、\\IPADDRESS
の代わりにMAPDRIVELETTER:
と稼働しています。
他の人に役立つ場合、タスクが実行されていたサービスが実行可能な場所への書き込み権限を持っていなかったときに、このエラーが発生しました。そこでログファイルを書き込もうとしていました。
私はこの問題を抱えていましたが、これは.Netフレームワークのバージョンが原因でした。ビルドをフレームワーク4.0にアップグレードしましたが、これはアプリケーションが使用していたいくつかのcomm dllに影響するようです。フレームワーク3.5にロールバックすると、問題なく機能しました。
同じエラーが発生しましたが、ファイル読み取りパスを "ConfigFile.xml"からに変更することで修正しましたAppDomain.CurrentDomain.BaseDirectory.ToString()+ "ConfigFile.xml"
私の場合、タスクマネージャは初期パスとして「System32」からプログラムを起動したため、ファイルパスエラーが原因でこのエラーが発生しました。
MVC 5を使用してdotNet Core 2.2内で同じメッセージメッセージを取得していましたが、Windowsイベントビューアーに何も記録されていませんでした。
Project sdkをMicrosoft.NET.Sdk.Web
からMicrosoft.NET.Sdk.Razor
(projects.csproj
ファイル内に表示)に変更したことがわかりました。私はこれを元に戻し、それはうまくいきました:)