データベースのインポート プロセスを 1 時間ごとに実行する Windows のスケジュールされたタスクがありますが、ユーザーが ASP.net ダッシュボード (Windows Server の IIS6 で実行) のボタンを押すことでスケジュール外に開始できるようにしたいと考えています。 2003)。
以下はコードビハインドで完全に機能します...
var proc = new Process
{
StartInfo =
{
UseShellExecute = false,
FileName = @"C:\Windows\System32\schtasks.exe",
Arguments = "/run /tn Loader",
RedirectStandardError = true,
RedirectStandardOutput = true,
CreateNoWindow = true
}
};
proc.Start();
proc.WaitForExit();
...ただし、アプリケーション プール ID が Local System に設定されている場合のみ (理想的ではありません!)。Network Service のままにしておくと、タスクが開始されません。したがって、おそらく権限の問題です。
アプリケーションをローカル システムとして実行せずに、ASP.net がサーバー上でスケジュールされたタスクを開始できる方法はありますか? そうでない場合、どのような良い代替手段がありますか?
更新: SOの誰も知らない場合、それは不可能だと思うので、Webアプリケーションにリクエストをデータベーステーブルに書き込み(監査ログを兼ねて)、そのテーブルをポーリングしてキックする2番目のタスクを作成するという私の考えに従いますメインタスクから離れます。