The*_*ads 10 c# asp.net-web-api
在我目前的项目中,需要安排一个方法以设定的间隔运行,例如每周一次,目前这是通过Windows服务创建HttpClient并点击所需的控制器方法完成的.
我想知道这是否可以在Web Api项目本身自动化,而不是使用外部服务.到目前为止,我还没有找到任何关于这样做的文档.
抱歉没有代码样本可以使用,因为我还没有找到一个基础.
Ion*_*316 11
如果您需要安排后台任务每周运行,您可以使用FluentScheduler(NuGet链接)为您运行它.你可以这样做:
public class WeeklyRegistry : Registry
{
public WeeklyRegistry()
{
Schedule<WeeklyTask>().ToRunEvery(1).Weeks(); // run WeeklyTask on a weekly basis
}
}
public class WeeklyTask : IJob
{
public void Execute()
{
// call the method to run weekly here
}
}
Run Code Online (Sandbox Code Playgroud)
更新FluentScheduler的新版本略微更改了API.该任务现在应该来自IJob,而不是ITask.更新了我的示例以反映这一点.
Web Api 中并没有真正的方法来实现您的愿望。无论如何,Web API 应该是无状态的。
理论上,您可以在您的 Web 服务器上创建一个长时间运行的任务来定期调用您的 Api(或直接调用该方法),放置此类方法的最佳位置是全局 asax 文件中的 OnStart 方法。但是,此方法在 Web 服务器加载到应用程序域时运行,当 Web 服务器决定卸载您的应用程序时,该任务将被终止。因此,如果您不至少调用一次 Web 服务器,您的任务将不会启动。如果您的 Web 服务器未定期访问,您的任务将被终止。
拥有外部可靠资源(例如您的服务)仍然是最好和最安全的方法。
| 归档时间: |
|
| 查看次数: |
14062 次 |
| 最近记录: |