问题描述
||
我正在开发基于ASP.NET MVC的Web应用程序。
有一个大型数据库。用户可以使用自定义过滤器(带有选项的html表单)在此数据库中进行搜索。用户提交表单并等待结果后。这是非常慢的操作。但这不是数据库优化或查询优化的问题。
因此,操作缓慢。我想运行此操作并不时获取页面状态,不时获取它的状态。
我看到它像:
发送第一个ajax请求(表单数据)以运行此慢速操作。
不时发送ajax请求以获取有关操作的信息。
问题:
1.如何在将在http请求之外处理的服务器上运行操作?
2.如何获取此操作的状态?
解决方法
如何在将在HTTP请求之外处理的服务器上运行操作
您可以在后台线程中运行它。手动生成一个,或者如果您使用的是.NET 4.0,请使用TPL。
如何获得此操作的状态?
一旦开始,该操作应被分配一个唯一的ID,并立即返回给客户端。然后,当操作在后台线程中进行时,它可以使用ID更新其进度。例如,您可以使用“应用程序”状态来存储此进度。客户端将定期轮询服务器以获取进度。