2010-02-21 2 views
4

ASP.NET 페이지에서 호스팅되는 Silverlight 응용 프로그램이 있습니다. 응용 프로그램을 처음 시작하고 백그라운드 프로세스 (다양한 주기적 검사)를 시작할 때 일부 처리를 수행해야합니다.어플 리케이션 _ 왜 Global.asax에서 여러 번 발사할까요?

Global.asax Application_Start 이벤트가이 작업을 수행하기에 좋은 장소라고 생각했지만 Application_Start가 여러 번 실행되는 것을 예상하지 못했습니다. 내가 읽은 바로는 마지막 사용자가 내 응용 프로그램에서 로그 아웃하면 세션이 사라지고 IIS가 내 응용 프로그램을 언로드한다는 것입니다. 다음에 요청되면 다시로드되고 Application_Start가 다시 실행됩니다. 이는 실제로 원하는 것이 아닙니다.

이것은 예상되는 동작입니까? 응용 프로그램을로드 된 상태로 유지할 수있는 방법이 있습니까?

둘째, 나는 주기적으로 백그라운드 프로세스를 실행하고 싶습니다. 어쩌면 Windows 서비스가 더 나은 곳이 될 수도 있지만 응용 프로그램의 정적 클래스에서 타이머를 실행하는 것이 편리합니다. 활성 사용자가 없더라도 이러한 실행을 유지할 수있는 방법이 있습니까?

+0

이벤트를 시작하는 데 필요한 시간 인 경우 어쩌면 우리는 그런 식으로 제안 할 수 있습니다. –

+0

분명히 말하자면, 응용 프로그램에 대한 최초 요청시에만 한 번만 실행하고 서버 자체가 다시 시작될 때까지는 다시 실행하지 말아야합니다. –

+0

시작할 때 실행되는 명령 줄 프로젝트를 만들 수 있습니까? 웹 페이지와 분리하십시오. –

답변

2

웹 서버 모델에 잘 맞지 않는 동작을 얻으려고한다고 생각합니다. 많은 CMS는 정기적 인 작업을 수행하려고합니다. 일부 사용자 웹 요청으로 작업을 시작하지만 많은 성공을 거둔 적이 한번도 없었습니다.

배포 문제, 액세스 권한 등으로 제한되지 않는 경우 Windows 서비스 접근 방법을 사용하는 것이 좋습니다. 빌드/배포 프로세스에 통합하여 문제가되지 않도록하십시오.

+0

불행히도 배포가 꽤 제한됩니다. 거의 모든 최종 사용자가 새로운 버전의 응용 프로그램을 배포하는 사람들과 가능한 한 간단해야합니다. Windows 서비스를 설치하게하는 것은 아마도 너무 먼 다리 일 것입니다! –

+0

흠, 그래, 문제가있는 것처럼 들리네 .--). 사용자가 Silverlight 응용 프로그램을 (브라우저 외부 Silverlight 응용 프로그램으로) 설치하거나 실제로 웹 응용 프로그램을 설치하게됩니까? 후자의 경우, 어떻게 할 것인가? – Rune

+0

아니요, 이것은 서버에만 있습니다. 이것은 Silverlight 응용 프로그램의 서버 부분입니다. 서버 관리자의 일반적인 기능에 대해서만 의견을 말했습니다. –

관련 문제