目前我正在开发一个项目,其中一个网页将通过使用Web服务启动一个3小时的数据传输过程。基本上,Id的列表用于告诉Web服务将数据对象从一个数据库传输到另一个数据库。从服务器更新aspx页面
当我开始这个过程时,我想让用户保持控制。他必须能够看到当前进程有多远,并且能够按取消按钮来停止数据传输。所有这些都从ASPX网页运行。
我发现试图运行异步进程不允许我按照我的希望更新用户界面。只有当整个过程完成时我可能面对的另一个问题是,由于过程花费了大量时间,服务器对象可能会在某个时候刷新,这可能会导致我失去进度。
我目前正在决定是否使用Web服务器来处理数据传输。如果我是,我目前的解决方案是使用任务异步运行进程,并使用客户端Web调用(到aspx页面)来更新客户端界面。我也为我的工作对象实现IRegisteredObject接口。 IRegisteredObject explanation
任何关于如何最好地解决这个问题的想法是最受欢迎的。我真的很想知道我是否正朝着正确的方向前进。
不,您不会在ASP.NET中执行长时间运行的后台任务,这是因为您找到的原因以及其他原因。你使用类似Windows服务的东西,例如WCF为IPC报告进度或取消操作。 http://stackoverflow.com/questions/28109449/launching-a-long-running-background-task-from-asp-net-or-a-scheduled-job, – CodeCaster