web-dev-qa-db-ja.com

.NETCoreコンソールアプリが0xC0000005のタスクスケジューラから失敗する

シンプルな.NET Coreコンソールアプリを作成しました(これは、いくつかのログファイルを書き込み、データベースにアクセスして、いくつかの電子メールを送信します)。 Windows内で.exeをダブルクリックしてタスクをトリガーすると、正常に機能します。

ただし、タスクスケジューラを介してタスクをトリガーしようとすると、コード0xC0000005ですぐに失敗します。この失敗は、実際にそのスケジュールでトリガーされた場合、またはタスクスケジューラアプリ内でタスクを右クリックして[実行]をクリックした場合に発生します。アプリが最初に実行しようとするのは、ログファイルに何かを書き込むことですが、これは決して起こりません。

同じサーバーに、まったく同じ権限とユーザーアカウントで構成された他の.NETコンソールアプリ(.NETコアではない)がたくさんあり、それらは正常に動作します。

イベントログには、次のようなレコードがあります。

障害が発生しているアプリケーション名:StorePlay.ClientEmailer.exe、バージョン:
1.1.0.1179、タイムスタンプ:0x58224b03障害のあるモジュール名:不明、バージョン:0.0.0.0、タイムスタンプ:0x00000000例外コード:0xc0000005
障害オフセット:0x00007ffaef1d8955障害が発生しているプロセスID:0xe0c障害が発生しています
アプリケーションの開始時刻:0x01d301e534cdde90アプリケーションパスの障害:
C:\ storePlay\Tasks\Client Emailer\StorePlay.ClientEmailer.exe障害が発生しています。
モジュールパス:不明レポートID:1bc8be44-744c-452e-a945-997d64d1d87b
障害のあるパッケージのフルネーム:障害のあるパッケージに関連するアプリケーションID:

これはすべて、Windows Server2016を実行しているマシン上にあります

2
Mick Byrne

私はあらゆる種類のソリューションを検索して試しましたが、うまくいったのは[開始]オプションを設定することでした。通常、誰かが参照した後、[プログラム/スクリプト]テキストボックスにフルパスを入力できます。これは、私が見たほとんどのタスクの実行方法です。 .Net Coreコンソールアプリは、オプションのパスを使用して実行する必要があるようです。これにより、appsettings.jsonを使用している場合は、それを見つけることができます。

https://stackoverflow.com/questions/43595119/schedule-a-net-core-console-application-on-windows-using-task-scheduler

enter image description here

5
Breadtruck

エラーは権限が原因である可能性があります。通常、taskschedulerはシステムアカウントでタスクを実行し、Windowsで通常の方法でexeを実行すると、資格情報を使用して実行されます。タスクスケジューラの下でタスク自体に資格情報を設定するか、必要なアクセス許可を持つユーザーを作成できる必要があります。

編集:回答を投稿するまで質問の年齢はわかりませんでしたが、それが他の誰かを助けるなら、素晴らしいです:)

3
Setorica