我拥有的是服务器上的一个进程,该进程运行并需要花费大量时间。它本质上构建了一些数据表,这些数据表在回发时显示在页面上。
我想要的是一种在服务器进程运行时在某处记录进度的方法,并在使用完成的数据刷新之前在我正在查看的页面上报告该进度。
这可能吗?我能想到的最好方法是将进度记录到服务器上的文件中,并通过 Ajax/Javascript 定期读取文件内容,但这看起来像是一个拼凑。
也许使用多个页面或线程可以实现这一点。我不确定。
有什么建议吗?
编辑:
主要目标是在网页上显示某种进度条以显示上述进度。
最佳答案
Is this even possible?
是的,但这并不容易,也不漂亮。
The best way I can think of to do this is to log progress to a file on the server and periodically read the file contents via Ajax/Javascript, but this seems like a kludge.
是的,差不多。其他选项是使用数据库来存储信息或 session ,但任何可以通过 Ajax 请求以某种方式访问的存储位置都可以。毫无疑问,您会想要创建一个网络服务或类似的服务来抽象出您使用的任何存储方法。
Here是 Microsoft 示例中该通用方法的实现。它使用Session来存储当前进度,并严重依赖基于ASP的构造。
另一个途径是在客户端和服务器之间设置一个 websocket,它允许您将信息从服务器推送到客户端。它可能会表现更好(减少网络 IO),尽管它可能不那么容易设置。不过,我没有任何示例(或尝试尝试)这样的解决方案。
关于c# - 有没有办法在网页上获取并显示正在运行的服务器进程的状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14148192/