나는 데이터베이스 가져 오기 프로세스를 1 시간마다 실행하는 Windows 예약 된 작업을 가지고 있습니다. 사용자가 매 시간마다 버튼을 눌러 일정을 벗어나서 실행할 수있게하고 싶습니다. ASP.net 대시 보드 (Windows Server 2003의 IIS6에서 실행) 완벽하게 코드 숨김에서ASP.net에서 Windows 예약 된 작업 실행
다음 작품 ...
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는 로컬 시스템 (이상적이지!)로 설정되어 있지만 경우에만 가능합니다. 네트워크 서비스로두면 작업이 시작되지 않습니다. 아마도 권한 문제 일 것입니다.
응용 프로그램을 로컬 시스템으로 실행하지 않고 ASP.net이 서버에서 예약 된 작업을 시작할 수있는 방법이 있습니까? 그렇지 않다면 어떤 좋은 대안이 있습니까?
업데이트 : 아무도에 SO 알고 있다면, 나는 내가 (감사 로그로 두 배) 데이터베이스 테이블에 내 웹 응용 프로그램의 쓰기 요청을 갖는 내 아이디어 가서 두 번째 작업을 생성 할 수 없습니다 추측 그 테이블을 폴링하고 주요 작업을 시작할 수 있습니다.
왜이 태스크가 webapp에서 호출 할 것인지를 호출하지 않는 이유는 무엇입니까? 태스크의 대상이 아닌 태스크를 실행하려는 이유는 무엇입니까? – Kousha
좋은 질문입니다. 1 특정 사용자로 실행해야하는 작업이 필요합니다. 2 매시간 예약 된 작업과 동시에 실행하면 안됩니다. 작업이 수동으로 시작된 경우 Windows Scheduler가 편리하게 시작하지 않습니다. 이 옵션은 제가 자세히 다뤘던 옵션은 아닙니다. – Chris