每隔5分钟刷新一次asp.net mvc

时间:2016-07-08 08:02:22

标签: asp.net-mvc html5

控制器显示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);

4 个答案:

答案 0 :(得分:3)

您可以向控制器中的Header添加HttpContext.Response

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

答案 1 :(得分:0)

<script type="text/javascript">
    setTimeout(function () { 
      location.reload();
    }, 5 * 60 * 1000);
</script>

参考Refresh Page for interval using js

您可以这样刷新页面

对于控制器,您可能需要在数据库中引用一个表,上次更新时,作为参考,您将不得不永久存储参考数据,这是我的意见,我从未有过这样的要求

答案 2 :(得分:0)

要在没有用户交互的情况下定期运行某些内容(即没有启动它的请求),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

答案 3 :(得分:0)

  • 每隔X秒更新客户端非常简单。只需使用一个 meta http-equiv 在页面的标题中使用值refresh

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

  • 要每X更新一次Excel工作表,您需要另一个应用程序 计时器。你可以随心所欲,如果你正在使用.net,一个简单的控制台应用程序就可以完成这项工作。如果您使用Azure,则可以使用辅助角色,这正是工作者的角色 是关于; p