我的要求是按特定时间和频率安排报告,即每周,每月或每日。
此报告应在指定时间邮寄,并附上计划附件。
提前致谢
答案 0 :(得分:2)
有一个名为Hangfire的强大框架,您可以使用它来安排.net中的任务:
您需要创建运行报告和发送电子邮件的方法,但您可以使用hangfire框架轻松安排该任务。
对于其他选择,请查看Hanselman撰写的博客文章:http://www.hanselman.com/blog/HowToRunBackgroundTasksInASPNET.aspx
答案 1 :(得分:0)
您可以使用Revalee开源项目在ASP.NET项目中安排任务。
Revalee是一项服务,允许您安排Web回调到您的Web应用程序。在您的情况下,您将安排一个回调,以便在特定时间同步您的数据。 Revalee非常适用于离散事务操作的任务,例如更新某些数据库值或发送自动电子邮件消息(读取:不长时间运行)。执行操作的代码都将驻留在您的应用中。
要使用Revalee,您会:
在服务器上安装Revalee Service(Windows服务)。 Windows服务在源代码(您可以自行编译),Revalee website中提供的预编译版本或Chocolatey中提供。
在Visual Studio项目中使用Revalee客户端库。 (还有一个特定于MVC的版本。)客户端库在源代码中可用(您可以自己编译)或通过NuGet提供的预编译版本。
当您的代码调用ScheduleReportTransmission()
方法时,您会注册将来的回调(此示例假设您需要在12小时后执行操作,但可能是任何日期和时间)
Private Sub ScheduleReportTransmission()
Dim callbackTime As DateTimeOffset = DateTimeOffset.Now.AddHours(12.0)
' The callback should be 12 hours from now
Dim callbackUrl As New Uri("http://mywebapp.com/TransmitReport.aspx")
' Register the callback request with the Revalee service
RevaleeRegistrar.ScheduleCallback(callbackTime, callbackUrl)
End Sub
当Revalee重新调用您的应用程序时,您的应用程序将执行您编写的任何操作。您可以通过将以下方法调用(TransmitReport()
)添加到TransmitReport.aspx
页面处理程序,àla:
Private Sub TransmitReport()
' TODO Lookup the report information and send the email
' ...
Return
End Sub
我希望这会有所帮助。
注意:上面的代码示例使用ScheduleCallback()
的同步版本,Revalee客户端库也支持异步调用àla:
RevaleeRegistrar.ScheduleCallbackAsync(callbackTime, callbackUrl)
如果上面不清楚,Revalee服务不是外部第三方在线调度程序服务,而是安装和在您自己的网络上完全控制的Windows服务。它驻留在您自己选择的服务器上并运行,很可能是您的Web服务器(但这不是必需的),它可以从ASP.NET应用程序接收回调注册请求。
免责声明:我是参与Revalee项目的开发人员之一。但需要明确的是,Revalee是免费的开源软件。源代码可在GitHub上找到。