Bob*_*lth 17 asp.net asp.net-mvc entity-framework
每天一次,我希望我的ASP.NET MVC4网站(可能在多台服务器上运行)通过电子邮件向我发送报告.这似乎是一件很常见的事情,但是我很难想出一个好方法.
由于几个原因,尝试在服务器上运行计时器来完成这项工作是有问题的.如果我有多个服务器,那么我将在所有服务器上运行计时器(如果服务器出现故障); 我需要在它们之间进行协调,这很复杂.此外,尝试通过实体框架从后台线程访问数据库增加了复杂性,我必须使用锁定策略来序列化周期性后台线程和"前台"控制器线程之间的DbContext对象的构造/处置.
另一种选择是在服务器上运行计时器,但让计时器线程对生成报告的魔术页面执行GET.这解决了DbContext问题,因为数据库访问发生在正常的Controller操作中,与所有其他Controller访问数据库序列化.但我仍然遇到可能有多个计时器运行的问题,因此我需要在Controller操作中使用一些智能来忽略冗余报告请求.
有什么建议?这种事情通常怎么做?
Dar*_*rov 14
您不应该从您的Web应用程序执行此任务,因为Phil Haack很好地解释了它his blog post.
这种事情通常怎么做?
您可以从Windows服务甚至是计划使用Windows计划程序定期运行的控制台应用程序执行此任务.
| 归档时间: |
|
| 查看次数: |
12872 次 |
| 最近记录: |