ASP.net中基于时间的事件

Sam*_*amg 9 sql-server asp.net workflow-foundation

我需要根据时间执行一些事件(发送电子邮件等).在托管(中等信任)环境中在ASP.net中实现此目的的最佳方法是什么?

例如:每天下午4点发送电子邮件.
例如:登录15分钟后发送电子邮件.
例如:上次更改状态10小时后发送电子邮件.

触发逻辑在某些要求上可能很复杂,因此我需要构建一个灵活的系统来处理这些类型的事件.我坚持使用此代码的核心激活方法.

这是我到目前为止的选择......

1)Global.asax中的计时器
+简单
- 不可靠,Web应用程序可以在IIS中卸载,并且事件不会触发.
?可能使用外部pinger服务来保持app活着(可靠吗?)

2)执行操作的Windows服务
- 滑动/维护单独的代码.
- 无法在托管环境中安装(共享/云托管)

3)调用Web App的Windows服务(调用webservice或运行页面)
+ Web应用程序中的所有代码
- 无法在托管环境中安装.

4)SQL Server作业调用Web服务(通过CLR)
?没有看过这个......可能吗?在托管环境中可靠吗?

5)SQL Service Broker Timer添加消息来调用WebService(通过CLR)
?没有看过这个......可能吗?在托管环境中可靠吗?

6)Windows工作流程?
?没有想法......这项技术有什么用吗?

这似乎是一个常见的问题,是否有第三方工具来处理这个问题?

tek*_*ues 1

我也遇到了同样的问题,非常同意你的分析。迄今为止,我最好的解决方案是在我控制的计算机中安装外部调度应用程序;该应用程序请求实际执行操作的网页。

丑陋但它有效,我已经寻找其他解决方案,相信我!