【问题标题】:refresh every 5 minutes en asp.net mvc每 5 分钟刷新一次 en asp.net mvc
【发布时间】:2026-01-28 00:00:02
【问题描述】:

控制器显示 Excel 表中的数据。 我需要控制器每 1 小时检查一次 excel 表,还应该更新视图。 这是我的控制器代码:

string path3 = "D:/Project/Sesame Incident Dump_20160317.xls";

Excel.Application application3 = new Excel.Application();
Excel.Workbook workbook3 = application3.Workbooks.Open(path3);
Excel.Worksheet worksheet3 = workbook3.ActiveSheet;
Excel.Range range3 = worksheet3.UsedRange;
List<SesameIncident> ListSesameIncident = new List<SesameIncident>();
for (int row = 2; row <= range3.Rows.Count; row++)
{
    SesameIncident S = new SesameIncident();
    S.Number = (((Excel.Range)range3.Cells[row, 1]).Text);
    S.AssignedTo = (((Excel.Range)range3.Cells[row, 5]).Text);
    S.Opened = (((Excel.Range)range3.Cells[row, 6]).Text);
    S.Status = (((Excel.Range)range3.Cells[row, 7]).Text);
    S.Priority = (((Excel.Range)range3.Cells[row, 10]).Text);
    S.AssignedGroup = (((Excel.Range)range3.Cells[row, 12]).Text);

    ListSesameIncident.Add(S);

}

ViewBag.ListSesameIncidents = ListSesameIncident
       .Where(x => x.Status == "Pending Customer").Take(13);

【问题讨论】:

  • 控制器每次调用它时都必须检查你的文件,除非使用了某种缓存
  • 或者数据可以存储在数据库中,我不明白你的完整实现想法
  • 控制器必须通过excel表

标签: asp.net-mvc html


【解决方案1】:

您可以在控制器中将Header 添加到您的HttpContext.Response

HttpContext.Response.Headers.Add("refresh", "300; url=" + Url.Action("Index"));

【讨论】:

  • 我需要它的时间呢? “三百!!!”或者我必须使用“1000”一秒钟
  • 我在我想每 1 小时或内部执行的方法之前添加了?
  • 300 秒 5 分钟
  • 位置无关紧要。您只需将此行添加到您的控制器,它返回的视图将每 5 分钟刷新一次,当视图刷新时,控制器代码将再次执行
  • 请问我怎样才能在没有这种闪烁的情况下以 Ajax 方式制作它?
【解决方案2】:
<script type="text/javascript">
    setTimeout(function () { 
      location.reload();
    }, 5 * 60 * 1000);
</script>

参考Refresh Page for interval using js

你可以这样刷新页面

对于控制器,您可能需要数据库中的表来参考,上次更新时间,作为参考,您必须永久存储参考数据,这是我的意见,我从来没有这样的要求

【讨论】:

  • 我可以使用睡眠吗?
【解决方案3】:

要在没有用户交互的情况下定期运行某些东西(即,没有启动它的请求),Web 应用程序不是您想要的。相反,您正在寻找 Windows 服务,或者可能是一个简单的控制台应用程序,由主机系统的调度软件(Windows 任务调度程序、cron 等)定期运行。见How to execute a method in Asp.net MVC for every 24 hours

我宁愿考虑缓存可以节省每次读取 xls 的时间。见How to cache data in a MVC application

【讨论】:

    【解决方案4】:
    • 每隔 X 秒更新一次客户端非常简单。只需使用一个 meta http-equiv 在您的页面标题中使用值refresh

      此解决方案简洁易于阅读,您不会依赖于简单的 JavaScript 循环。

    • 要每 X 更新一次 Excel 工作表,您需要另一个具有 计时器。你可以做任何你想做的事情,如果你使用.net,一个简单的控制台应用程序就可以完成这项工作。如果您使用的是 Azure,您可以只使用工作人员角色,这正是工作人员的作用 是关于;p

    【讨论】: