繁体   English   中英

虚拟主机中发送自动报告的方法

[英]Method to Send Automatic Report in Webhosting

我有一个在Visual Studio 2010中创建的Web项目,并将SQL Server 2008 R2用于数据库,通常我使用SQL Server Agent将报告(从SQL数据库)发送到我的客户端电子邮件,现在我想将我的应用程序移至其他Web托管。 。 我的问题是,有什么方法可以在虚拟主机中按计划自动生成报告并发送到电子邮件吗?

谢谢你的建议。

使用Revalee开源项目可以在Web项目中安排任务。

Revalee是一项服务,使您可以计划Web回调到Web应用程序。 对于您的情况,您将安排一个回调,该回调将生成报告并自动发送电子邮件。 Revalee可以很好地处理作为离散事务操作的任务,例如更新数据库值或发送自动电子邮件消息(阅读:长期运行)。 生成报告和发送电子邮件的代码位于您的Web应用程序中。 更具体地说,在Revalee将在您计划的时间调用的目标网页上。 当您的应用程序首次启动时,您将安排第一个Web回调。 当您的应用程序被调用回生成报告时,您将计划下一个回调。

要使用Revalee,您需要:

  1. 在服务器上安装Revalee服务(Windows服务)。 Windows Service可以在源代码(您可以自己编译)中使用,也可以在Revalee网站上获得的预编译版本中使用(上文)。

  2. 在您的Visual Studio项目中使用Revalee客户端库。 客户端库可以在源代码(可以再次编译)中使用,也可以在通过NuGet获得的预编译版本中使用。

  3. 当您的应用程序通过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; } 
  4. you schedule the next callback too. 当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(); } } 

我希望这有帮助。

最后一件事:万一您将Web应用程序从ASP.NET迁移到ASP.NET MVC,Revalee确实也具有ASP.NET MVC特定的库。

免责声明:我是参与Revalee项目的开发人员之一。 不过要明确一点,Revalee是免费的开源软件。 源代码可在GitHub上获得

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM