从服务器更新aspx页面

本文关键字:页面 aspx 更新 服务器 | 更新日期: 2023-09-27 18:10:34

目前我正在做一个项目,其中一个网页将通过使用web服务开始3小时的数据传输过程。基本上,使用Id列表告诉web服务将数据对象从一个数据库传输到另一个数据库。

当我启动进程时,我希望允许用户保持控制。他必须能够看到当前进程有多远,并且能够按下取消按钮来停止数据传输。所有这些都是在ASPX网页上运行的。

我发现尝试异步运行进程不允许我像我希望的那样更新用户界面。我可能面临的另一个问题是,由于该过程花费了大量时间,服务器对象可能会在某些时候刷新,这可能会导致我丢失进度。

我目前正在决定是否使用web服务器来处理数据传输。如果我是,我目前的解决方案是使用任务来异步运行进程,并使用客户端web调用(到aspx页面)来更新客户端界面。我还为我的工作对象实现了IRegisteredObject接口。IRegisteredObject解释

关于如何最好地解决这个问题的任何想法都是非常受欢迎的。我真的很想知道我是否走对了方向。

从服务器更新aspx页面

我的建议是你创建一个WCF服务,它不是在ASP中托管的。NET和制作你的ASP。. NET应用程序调用该服务以触发执行数据传输的长时间运行作业。同时,你的ASP。. NET应用程序通知用户它已经触发了作业,你可以公开服务上的其他端点。NET应用程序可以通过查询用户请求,以便提取和报告进度。

web服务器一次只会为每个用户运行一个页面,所以如果你想在进程运行时与浏览器通信,你不能从请求中运行进度。你需要将它作为一个独立的后台线程启动,这样你才能完成启动该进程的请求。

之后,您可以向服务器发送请求来轮询进程的状态,或者控制进程。

如果可能的话,您应该完全在IIS之外运行该进程,例如作为控制台应用程序。这样,您只需要跟踪web应用程序中运行的进程的事实,例如将其放入数据库中,以便它在IIS回收中幸存下来。