我们有一个网站,需要一个定时器在特定时间接收通知(电子邮件)。例如,一个人设置提醒在下午5点参加下午4:45的会议,将在4:45 PM收到同样的电子邮件。
由于该站点托管在共享服务器上,我们无法控制服务器运行任何SQL作业或调度程序应用程序。
在asp.net中是否有任何东西可以帮助解决这个问题?
我们有一个网站,需要一个定时器在特定时间接收通知(电子邮件)。例如,一个人设置提醒在下午5点参加下午4:45的会议,将在4:45 PM收到同样的电子邮件。
由于该站点托管在共享服务器上,我们无法控制服务器运行任何SQL作业或调度程序应用程序。
在asp.net中是否有任何东西可以帮助解决这个问题?
你需要在服务器上完成一项工作,但是你没有好的方法从ASP.NET触发它?
那么创建一个网页来启动你的任务,然后在其他地方(例如另一台电脑)运行一个定时器,请求该页面即可触发你的任务。(只需访问该页面即可触发任务)
然而,如果你真的完全卡住了,没有选择,只能在你的WebApp中托管它,
你可以考虑在Global.asax.cs文件中创建一个System.Timers.Timer实例。像平常一样连接一个Elapsed事件,并给它一些代码,做一些类似于以下的事情:
protected void myTimer_Elapsed(object sender, EventArgs e)
{
if(System.DateTime.Now Falls in Some Configured Time-Window)
//Do Stuff
}
这并不是一个理想的做法,但你可以像Razzie建议的那样去做。我已经看到过很多次了。虽然很丑陋,但有时候你只能使用这些丑陋的hack。
使用这种方法,你必须确保你的应用程序没有被卸载。所以你需要一些保持活跃的方式。我建议设置一个网络监控工具,它将不断地拉取一个页面(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没有提供有关源代码编译的任何信息)欢迎每一个提示!