asp.net - 可访问 HttpContext 的 ASP.NET 任务调度
问题描述
首先,我的目标是实现任务调度,其中的工作是每天创建当前网页的离线HTML文件。
我已经尝试过 Quartz.NET,但它似乎不合适,因为HttpContext
Job 类无法访问。由于页面内容高度依赖服务器端数据,并且在生成离线文件时有很多客户端编辑,如果不直接访问“现成”,这些可能会非常复杂HttpContext
。
对我有什么建议和想法吗?
(我使用的是早期版本的 ASP.NET 而不是 Core,所以HttpContextAccessor
也不考虑。)
解决方案
在创建Job
时,您可以访问 HttpContext,您可以提供从HttpContext
到的所有信息JobBuilder
。
代码取自https://www.quartz-scheduler.net/documentation/quartz-3.x/tutorial/more-about-jobs.html
代码在 c# 中,我希望你能在 vb.net 中做同样的事情
// define the job and tie it to our DumbJob class
IJobDetail job = JobBuilder.Create<DumbJob>()
.WithIdentity("myJob", "group1")
.UsingJobData("jobSays", "Hello World!") // key value (put required key and value from HttpContext)
.UsingJobData("myFloatValue", 3.141f)
.Build();
下面是一个在作业执行期间从 JobDataMap 获取数据的快速示例:
从 JobDataMap 获取值
public class DumbJob : IJob
{
public async Task Execute(IJobExecutionContext context)
{
JobKey key = context.JobDetail.Key;
JobDataMap dataMap = context.JobDetail.JobDataMap;
string jobSays = dataMap.GetString("jobSays");
float myFloatValue = dataMap.GetFloat("myFloatValue");
await Console.Error.WriteLineAsync("Instance " + key + " of DumbJob says: " + jobSays + ", and val is: " + myFloatValue);
}
}
推荐阅读
- html - CSS 类中没有任何鼠标操作
- javascript - 错误:使用 INFURA 时 JSON RPC 响应无效
- bash - 为什么我的 git shell 在我的笔记本电脑上看起来像这样:[name@name-Laptop ~ (master *+)]$,但在台式机上却没有
- aspose - Aspose.HTML - 将 HTML 渲染为图像
- amazon-cloudformation - 如何使用 CloudFormation 针对两个指标的总和定义 CloudWatch 警报?
- django - 在 django 中翻译动态内容
- c# - C# WPF 按数据中的关键字对数据网格进行分组
- python - 是否可以在 google.cloud.storage python 客户端中使用 x-goog-if-generation-match ?
- c# - MVC C# 搜索过滤器
- excel - 在excel中不会改变的vba代码时间戳