微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在ASP.NET MVC网站上执行定期工作?

每天一次,我想要我的ASP.NET MVC4网站,可能在多台服务器上运行,向我发送一个报告.这似乎是一个很常见的事情想要做,但我有一个艰难的时刻提出了一个很好的方法来做到这一点.

尝试在服务器上运行定时器来执行此工作是有问题的,原因有两个.如果我有多个服务器,那么我会在所有的服务器上运行定时器(如果服务器关闭);我需要在他们之间进行协调,这很复杂.此外,尝试通过后台线程通过Entity Framework访问数据库时,会增加复杂性,我必须采用锁定策略来对定期后台线程和“前台”控制器线程之间的DbContext对象的构造/处理进行序列化.

一个选择是在服务器上运行一个计时器,但要让定时器线程执行GET到一个魔术页面,生成发送邮件.这解决了DbContext问题,因为数据库访问发生在正常的Controller操作中,并且与数据库的所有其他Controller访问序列化.但是我仍然遇到可能有多个计时器运行的问题,所以我需要一些智能控制器的操作来忽略冗余的报告请求.

有什么建议么?这种事情通常如何做?

解决方法

Phil Haack在 his blog post中很好地解释了你不应该从你的网络应用程序做这个任务.

How is this sort of thing normally done?

您可以从Windows服务或甚至计划使用Windows Scheduler定期运行的控制台应用程序执行此任务.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐