我有在Visual Studio 2010中创建的Web项目,并使用SQL Server 2008 R2作为数据库, 通常我使用SQL Server代理将报告(从SQL数据库)发送到我的客户端电子邮件,现在我想将我的应用程序移动到其他Web托管。我的问题是,是否有任何方法可以按照计划在网络托管中自动生成报告并发送到电子邮件?
感谢您的建议。
答案 0 :(得分:0)
使用Revalee开源项目可以在Web项目中安排任务。
Revalee是一项服务,允许您安排Web回调到您的Web应用程序。在您的情况下,您将安排一个回调,该回调将生成您的报告并自动发送电子邮件。 Revalee可以很好地处理离散事务操作的任务,例如更新数据库值或发送自动电子邮件消息(读取:不长时间运行)。生成报告和发送电子邮件的代码将驻留在您的Web应用程序中。更具体地说,在Revalee将在您预定的时间拨打的目标网页上。当您的应用程序第一次启动时,您将安排第一次Web回调。当您的应用程序被回调以生成报告时,您将安排下一个回调。
要使用Revalee,您会:
在服务器上安装Revalee Service(Windows服务)。 Windows服务在源代码(您可以自行编译)或Revalee website(上图)中提供的预编译版本中提供。
在Visual Studio项目中使用Revalee客户端库。客户端库可以在源代码中找到(您可以自己编译)或通过NuGet提供的预编译版本。
当您的应用程序通过ScheduleMidnightCallback()
方法启动时,您将注册未来的回调(例如,在特定时间)。
private DateTimeOffet? previousCallbackTime = null;
private void ScheduleMidnightCallback()
{
// Schedule your callback for midnight tomorrow
var tomorrow = DateTimeOffset.Now.AddDays(1.0);
var callbackTime = new DateTimeOffset(tomorrow.Year,
tomorrow.Month,
tomorrow.Day,
0, // Hour
0, // Minute
0, // Second
tomorrow.Offset);
// Your web service's Uri, including any query string parameters your app might need
Uri callbackUrl = new Uri("http://yourwebapp.com/Callback.aspx");
// Register the callback request with the Revalee service
RevaleeRegistrar.ScheduleCallback(callbackTime, callbackUrl);
previousCallbackTime = callbackTime;
}
当Web计划任务激活并重新调用您的应用程序时,您将执行在午夜和您需要执行的任何操作,您也可以安排下一个回调。您可以通过将以下方法调用(CallbackMonitor()
)添加到Callback.aspx
页面处理程序来完成此操作。
private DateTimeOffset? mostRecentCallback = null;
private void CallbackMonitor()
{
var midnight = new DateTimeOffset(DateTimeOffset.Now.Year,
DateTimeOffset.Now.Month,
DateTimeOffset.Now.Day,
0, // Hour
0, // Minute
0, // Second
DateTimeOffset.Now.Offset);
if (!mostRecentCallback.HasValue
|| mostRecentCallback.Value < midnight)
{
mostRecentCallback = midnight;
// Perform your report generation & send email-related tasks
// ...do your work here...
// Schedule subsequent callback
ScheduleMidnightCallback();
}
}
我希望这会有所帮助。
最后一件事:Revalee也有一个ASP.NET MVC特定库,以防您将Web应用程序从ASP.NET迁移到ASP.NET MVC。
免责声明:我是参与Revalee项目的开发人员之一。但需要明确的是,Revalee是免费的开源软件。源代码可在GitHub上找到。