ASP.NET MVC:在服务器上执行缓慢的操作并获取其状态

问题描述

|| 我正在开发基于ASP.NET MVC的Web应用程序。 有一个大型数据库用户可以使用自定义过滤器(带有选项的html表单)在此数据库中进行搜索用户提交表单并等待结果后。这是非常慢的操作。但这不是数据库优化或查询优化的问题。 因此,操作缓慢。我想运行此操作并不时获取页面状态,不时获取它的状态。 我看到它像: 发送第一个ajax请求(表单数据)以运行此慢速操作。 不时发送ajax请求以获取有关操作的信息。 问题: 1.如何在将在http请求之外处理的服务器上运行操作? 2.如何获取此操作的状态?     

解决方法

  如何在将在HTTP请求之外处理的服务器上运行操作 您可以在后台线程中运行它。手动生成一个,或者如果您使用的是.NET 4.0,请使用TPL。   如何获得此操作的状态? 一旦开始,该操作应被分配一个唯一的ID,并立即返回给客户端。然后,当操作在后台线程中进行时,它可以使用ID更新其进度。例如,您可以使用“应用程序”状态来存储此进度。客户端将定期轮询服务器以获取进度。