2009-11-25 1 views
5

안녕하세요, 내 웹 사이트에는 수천 명의 사용자가 있습니다. 하루에 한 번씩 모든 사용자에게 메일을 보내는 백그라운드 작업을 구현했습니다 ...이 작업을 위해이 링크를 따라갔습니다. 그래서 그것을 피하려고 때문에 모든 사용자가 매일 메일의 수를 수신 할 경우 ..Application_Start() event in global.asax

http://www.codeproject.com/KB/aspnet/ASPNETService.aspx

내 질문을 위해 Application_Start() ... 내 웹 사이트를 치는 모든 사용자에 대해 해고 될 것입니다 ..

답변

15

Application_Start 및 Application_End 메서드는 HttpApplication 이벤트를 나타내지 않는 특별한 메서드입니다. ASP.NET은 각 HttpApplication 인스턴스가 아닌 응용 프로그램 도메인의 수명 동안 한 번만 호출합니다.

그래서 처음 사용자가 사이트를 열면 application_start 메소드가 실행됩니다.

내가하려는 것은 위험하다는 것입니다. 일괄 이메일 전송을 원할 경우 매일 이메일을 보낼 수있는 스케줄러에 대해 생각해보십시오.

+0

안녕하세요, 저는 공유 호스팅에서 스케줄러를 허용하지 않을 것입니다. –

+0

안녕하세요. 최근에 사이트의 "항상"사이트로 변환하여 웹 사이트에서 실행되는 backgroudn 작업을 구현했습니다. 이를 수행 할 수있는 응용 프로그램 풀의 설정이 있습니다. 그걸 들여다보고 싶을 수도 있습니다. – Zeus

2

Application_Start는 첫 번째 사람이 사이트로 이동할 때 및 app_pool이 새로 고침 될 때만 실행됩니다.

사이트에 도달 할 때마다 발생하는 것은 아닙니다.

작업을 예약하려면 cron-like 시스템에 대해 http://www.webcron.org/과 같은 것을 생각하고 싶을 것입니다.

+0

아마도 OP가 _BeginRequest를 생각하고 있습니까? –

+0

안녕하세요 john, 공유 할 수 있으므로 스케줄러를 사용할 수 없습니다 ... 캐시 항목 콜백을 사용하고 사용자를 위해 aday에서 메일을 한 번만 보내십시오. –

+0

캐시 항목 콜백에 의존 할 수 없으며 캐시가 만료 될 수 있습니다. 앱에 메모리 또는 무언가가 필요하기 때문에 내가 너라면 http://www.webcron.org/ 또는 유사한 사이트를 사용하려고 시도 할 것입니다. –

0

Application_BeginRequest와 모든 방문자의 상태를 저장하는 DB에 있어야합니다. 그러나 가장 적절한 스케줄러입니다.

+0

하이 저거가 답장을 보내 주셔서 감사합니다. –