2009-09-18 3 views
1

자정 00:00에 IIS를 다시 시작하는 Windows 작업이 있습니다. 내 응용 프로그램에는 02:00 경에 전역 새로 고침을 실행하는 백그라운드 스레드가 있습니다.IISRESET을 실행 한 직후 ASP.NET 응용 프로그램을 다시 시작하려면 어떻게합니까?

내 문제는 응용 프로그램이 브라우저의 첫 번째 요청에서만 시작된다는 것입니다. 이것은 꽤 오랜 시간 동안 발생하지 않을 수 있으며 글로벌 새로 고침은 시작할 때 늦을 수 있습니다.

웹 응용 프로그램을 처음으로 탐색하지 않고 응용 프로그램을 시작할 수있는 방법이 있습니까?

답변

3

IIS를 다시 시작한 후 웹 사이트에 액세스하는 다른 작업을 할 수 있습니다.

여전히 IIS 작업자 프로세스 내에서 스레드가 유지 관리를 수행하는 이유를 알 수 없습니다. 프로세스가 어떤 이유로 (예를 들어 웹 사이트의 응용 프로그램 풀에서 재활용 구성으로 인해) 작동하지 않으면 작업이 완료되지 않습니다. Windows 서비스 나 예약 된 Windows 작업과 같은 별도의 프로세스에서이 작업을 수행하는 것이 좋습니다.

1

IIS에는 IIS 웹 응용 프로그램 내에서 예약 된 스레드가 없어야합니다. IIS에는 작업자 프로세스와 응용 프로그램을 사용하지 않을 때 재활용하는 논리가 있으므로 사용해야합니다. 별도의 응용 프로그램으로 실행하는 것이 좋습니다 (별도로 예약 됨).

4

이상적으로는 웹 응용 프로그램과 별개로 유지 관리 작업 (예약 된 작업 또는 Windows 서비스)을 유지해야합니다.

하지만, 당신이 정말로 그것을 할 필요가있는 경우 수행하는 배치 파일을 만들 수 있습니다이 방법 :

iisreset /restart 
"C:\Program Files\GnuWin32\bin\wget.exe" -O nul http://www.myapp.com/default.aspx 

그런 다음 12시 예약 된 작업으로이 배치 파일을 실행합니다. 이렇게하면 IIS가 다시 시작되고 응용 프로그램이 예열됩니다.

당신은에서 GNU wget.exe를 얻을 수 있습니다 :

WGET for Windows (SourceForge)

+0

일부 희귀 한 시나리오에 유의해야 할 작은주의 사항 : IIS 웹 정원을 사용하도록 구성된 웹 사이트에서는 작동하지 않습니다. (글쎄, 그렇긴하지만, 요청을 처리하기 위해 스핀 업 한 작업자 프로세스 만 워밍업시킬 것이다.) –

+0

이것은 사실이지만, OP는 자신의 백그라운드 스레드가 생성/초기화되고 작업 준비가 필요하다. 그의 전체 애플 리케이션이 예열보다. 또한 웹 가든에서 실행되는 경우, 우리는 완전히 다른 생각의 세계에 빠지게 될 것입니다. 동시성 문제. – Kev

0

는 또한 작업 관리자에 의해 호출 PowerShell 스크립트를 사용할 수 있습니다. 다음은 SharePoint 서버를 "워밍업"하는 데 사용하는 간단한 6 줄 script입니다.

기본 .NET 응용 프로그램의 용도를 바꾸거나 비슷한 스크립트를 찾을 수 있습니다.

관련 문제