문제

특정 시간에 알림 (이메일)을 받기 위해 스케줄러가 필요한 웹 사이트가 있습니다. 예를 들어. 오후 5시 45 분에 회의에 참석하기 위해 오후 5시에 알림을 설정하는 사람은 오후 4시 45 분에 이메일을받습니다.

이 사이트는 공유 서버에서 호스팅되므로 SQL 작업 또는 스케줄러 애플리케이션을 실행할 서버를 제어 할 수 없습니다.

ASP.NET 에이 시나리오에서 도움이 될 수있는 것이 있습니까?

도움이 되었습니까?

해결책

이건 어때: ASP.NET을 사용하여 Windows 서비스를 시뮬레이션하여 예정된 작업을 실행합니다..

어느 시점 에서이 기술은이 기술이었습니다 스택 오버 플로우에 사용됩니다, 더 이상 생각하지는 않지만.

솔직히 말해서 그것은 나에게 불쾌하고 오류가 발생하기 쉬운 해킹처럼 보이지만, 웹 사이트를 제외한 서버에서 아무것도 실행할 수 없다면 이와 같은 것이 유일한 옵션 일 것입니다.

다른 팁

서버에서 작업을 수행해야하지만 ASP.NET에서 트리거하는 좋은 방법이 없습니까?

작업을 시작하고 해당 페이지를 요청하는 다른 곳에서 타이머를 실행하는 웹 페이지를 만드는 것은 어떻습니까? (작업을 시작하기 위해 페이지를 치는 것만

나는 당신과 같은 문제가 있었고 Quartz.net을 사용하는 서비스를 프로그래밍했습니다. http://quartznet.sourceforge.net/ 웹 사이트와 동일한 데이터베이스에 연결하십시오.

ASP.NET을 사용하면 항상 앱이 살아 있다는 것을 보장하지 않으므로 스케줄링 솔루션을위한 호스트 프로세스로서의 웹 애플리케이션은 실현 가능하지 않습니다.

Windows 서비스는이 시나리오에 필요한 것입니다. 응용 프로그램 모니터링 방법뿐만 아니라 프로세스 시작 및 중지를 완전히 제어 할 수 있습니다.

다른 기계에서 그러한 서비스를 호스팅 할 수 있습니까? 호스팅 서버에서 웹 애플리케이션이 실행 중이더라도 동일한 서버에서 스케줄러를 실행해야한다는 의미는 아닙니다.

서버를 실제로 제어 할 수없는 경우 (즉, SQL 작업, 예정된 작업을 사용할 수 없거나 Windows 서버를 설치할 수 없음) System.threading.timer x 분마다 응용 프로그램에서 특정 방법을 호출하는 Global.asax (예 : 응용 프로그램 시작시)에서 초기화합니다. 이 방법은 데이터베이스를 쿼리하고 어떤 알림을 보내야하는지 확인합니다.

Peter가 항상 웹 애플리케이션이 항상 살아남는 것은 아니기 때문에 타이머가 항상 내가 아는 한 항상 호출하는 것이 보장되지 않기 때문에 이것은 실제로 바람직한 접근법이 아닙니다.

그러나 요구 사항에 따라 다른 옵션이없는 경우에도 여전히 '충분히 좋은'접근 방식 일 수 있습니다.

그러나 당신이 정말로 완전히 붙어 있고 선택의 여지가 없다면 웹 app에서 호스팅 할 수밖에 없습니다.

당신은 a를 만드는 것을 볼 수 있습니다 System.Timers.Timer Global.asax.cs 파일의 인스턴스. 평소와 같이 경과 이벤트를 연결하고 라인을 따라 무언가를하는 코드를 제공합니다.

protected void myTimer_Elapsed(object sender, EventArgs e)
{
    if(System.DateTime.Now Falls in Some Configured Time-Window)
        //Do Stuff
}

그러나 누군가가 지적했듯이, IIS가 그 기간 동안 재설정 될 수 있으므로 보장되지 않으며,이 경우 놓칠 것입니다.

실제로 바람직하지는 않지만 Razzie가 제안한 것을 할 수 있습니다. 나는 그것을 여러 번 보았다. 추악하지만 때로는 추악한 해킹을해야합니다.

그러나이 방법을 사용하면 응용 프로그램이 언로드되지 않았는지 확인해야합니다. 그래서 당신은 일종의 살아있는 것을 필요로합니다. 애플리케이션을 계속 유지하기 위해 페이지 (ASPX)를 지속적으로 가져 오는 웹 모니터링 도구를 설정하는 것이 좋습니다. 이 사람들은 무료입니다 http://mon.itor.us/

Quartz.net (1.0 및 1.0.1)의 소스 코드는 Visual Studio.net 2005 및 2008에서 컴파일하지 않기 때문에 당신을 믿지 않습니다. Quartz.net을 얻는 유일한 방법은 전체 spring.net 패키지를 사용하는 것입니다. VS.NET 2005 및 2008에 따라 잘 컴파일합니다

몇 가지 팁을 공유 할 수 없다면 ASP.NET 프로젝트에서 Quartz.dll을 컴파일하고 사용하는 방법! (quartz.net 및 readme.txt의 웹 페이지는 소스 Coude 컴파일에 대한 정보를 제공하지 않습니다) 모든 팁이 환영됩니다!

처음에는 문제가 있었지만 필요한 asemblyinfo.cs가 부모 폴더에 포함되어 있기 때문입니다. 또한 포함 된 3 개의 DLL을 추가해야합니다.

Quartz.net (1.0 및 1.0.1)의 소스 코드는 Visual Studio.net 2005 및 2008에서 컴파일하지 않기 때문에 당신을 믿지 않습니다. Quartz.net을 얻는 유일한 방법은 전체 spring.net 패키지를 사용하는 것입니다. VS.NET 2005 및 2008에 따라 잘 컴파일합니다

몇 가지 팁을 공유 할 수 없다면 ASP.NET 프로젝트에서 Quartz.dll을 컴파일하고 사용하는 방법! (quartz.net 및 readme.txt의 웹 페이지는 소스 Coude 컴파일에 대한 정보를 제공하지 않습니다) 모든 팁이 환영됩니다!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top