【问题标题】:Schedule HTTP Request in Asp.net site在 Asp.net 站点中安排 HTTP 请求
【发布时间】:2018-01-30 18:44:46
【问题描述】:

每天晚上我的 HTTPContext.Current.Cache 都会被清除。我想在晚上 X 时间预热网站并用数据填充缓存。

因为我使用 HTTPContext,所以它必须在网站内运行。我目前正在通过单击站点上的一个简单按钮来启动缓存,然后在几分钟的时间范围内异步填充缓存。

我已经寻找了一个解决方案,其中选项并没有像我想象的那样轻松完成工作:

System.Timers 不断轮询。它似乎也没有设置我希望它运行的特定时间的选项?

Quartz 看起来有点矫枉过正,但或许可以胜任。虽然需要阅读以使其正常工作。

RegisterWaitForSingleObject 也可以,但这里也只有一个计时器?也不确定您是否可以检查是否已经创建了一个对象,因此存在创建许多对象的风险。创建对象后也不更改计时器。

浏览它们的速度相对较快,因此可能是错误的。您对在站点内运行预定的 http 请求有何看法?

[编辑] 错字。

【问题讨论】:

  • 此应用程序是在单个实例上运行还是在网络场/网络花园上运行?
  • 任务调度器调用 curl 请求包含相关代码的页面?
  • @Win 在网络场上运行。
  • @AlexK。也许可以工作。您能否通过在网站上单击按钮来请求页面以按需启动代码,而不会将用户扔到该页面或以其他方式阻止他们?
  • 只要让页面在加载的时候做一些事情,不需要交互。

标签: c# asp.net scheduled-tasks httpcontext.cache


【解决方案1】:

这就是我要做的-

  1. 在站点内创建一个匿名访问页面,并放置代码以启动缓存(现在写在按钮单击上)ON THE PAGE LOAD 事件。

  2. 在 C# 中创建一个简单的控制台应用程序,向该页面发出 HTTPRequest(您可以查看 System.Net.WebClient 的示例)。

  3. 安排此控制台应用程序的 .exe 在服务器上的 Windows 调度程序上的特定时间(如凌晨 4 点)运行。

【讨论】:

  • 我会试试这个,看看我是否会坚持下去!谢谢。
  • 这种方法很容易设置和工作。仍然想知道是否有另一种方法,因为避免另一个项目和配置文件会很棒。
  • 乐于助人,永远!如果此答案或任何其他答案解决了您的问题,请将其标记为已接受
猜你喜欢
  • 1970-01-01
  • 2022-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-09
  • 1970-01-01
  • 2012-04-05
  • 1970-01-01
相关资源
最近更新 更多