Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
强制加载ASP.NET页面_Asp.net_Asynchronous - Fatal编程技术网

强制加载ASP.NET页面

强制加载ASP.NET页面,asp.net,asynchronous,Asp.net,Asynchronous,我有一个ASP.NET(4.5+)应用程序,它从Page_Load调用异步任务以获取页面数据。我想每15分钟刷新一次数据,不需要任何用户输入 首先,我尝试使用计时器并在计时器函数中调用Page.ExecuteRegisteredAsyncTasks()。没有错误,但我的异步任务从未被调用。仅在页面加载期间 然后我尝试了各种技术来强制重新加载页面,这会导致再次调用page_Load,但每次尝试都会引发异常,表示当时无法使用该技术 我希望每15分钟调用一次的C#方法被定义为私有异步任务 每15分钟调

我有一个ASP.NET(4.5+)应用程序,它从Page_Load调用异步任务以获取页面数据。我想每15分钟刷新一次数据,不需要任何用户输入

首先,我尝试使用计时器并在计时器函数中调用Page.ExecuteRegisteredAsyncTasks()。没有错误,但我的异步任务从未被调用。仅在页面加载期间

然后我尝试了各种技术来强制重新加载页面,这会导致再次调用page_Load,但每次尝试都会引发异常,表示当时无法使用该技术

我希望每15分钟调用一次的C#方法被定义为私有异步任务


每15分钟调用此方法的最佳方式是什么?正如我在上面所写的,它正在从Page_Load成功调用,但再也不会调用了。

您将需要使用某种工作程序。如果您有计时器,那么每次刷新页面时,计时器都会重置,您可以使用会话变量来跟踪。这就是页面生命周期的本质

一种替代方法是创建一个服务,您可以使用ASMX服务来实现这一点,并从客户端提取数据。用于跟踪上次更新的时间,甚至“nextTimeToUpdate”存储15分钟以上的时间。设置每1分钟的超时检查当前日期时间,如果>=nextTimeToUpdate,则通过AJAX触发请求

由于本地存储即使在浏览器关闭后仍然存在,因此当用户下次访问页面时,数据仍将存在。只有当用户关闭机器/清洁浏览器时,数据才会丢失

编辑

假设您希望在服务器端触发这些事件。将异步任务移动到一个新类中,在所需页面上实例化或注入它


斯科特·汉斯曼有一篇关于这方面的文章。一个值得注意的库

你必须使用定时器,我认为这是最好的方法

只需遵循以下步骤:

在设计页面中:

<asp:ScriptManager ID="manager" runat="server" />
<asp:Timer ID="timer" runat="server" Interval="900000" OnTick="timer_Tick" />
相关问题:
protected void Page_Load(object sender, EventArgs e){
    MyFunc();
}
protected void timer_Tick(object sender, EventArgs e){
   MyFunc();
}
protected void MyFunc(){
   //do all actions, what you need, here
}