2012-06-20 28 views
0

我正在处理用户将文件上传到将要解析的服务器的项目。将数据返回给客户端后继续执行ASP.NET脚本

我希望用户在上传完成后接收状态消息,然后让他们能够轮询服务器以获取有关解析状态的更新。

我正在考虑使用ajax文件上传,其中当客户端收到来自服务器的上载成功消息时,它会开始每2秒轮询一次状态。我不知道如何将数据返回给用户,同时仍然让服务器继续执行解析器并能够跟踪执行的状态。

从控制器返回视图后继续脚本执行的最佳方式是什么?

编辑:

我怀疑我可能需要产生另一个过程,但我不知道如何做到这一点

+0

你想看看SignalR.js或Node.js,或者你想去看看[Comet](http://en.wikipedia.org/wiki/Comet_(编程)) – MilkyWayJoe

+0

[Here]( http://code.msdn.microsoft.com/CSASPNETBackgroundWorker-dda8d7b6/view/SourceCode)是MSDN上的一个例子。 – Servy

回答

2

我认为,在这种特殊情况下,将文件处理与Web请求分离是有意义的。 C.M.建议的ThreadPool.QueueUserWorkItem方法是一种选择,但您可能还想考虑使用真正的排队机制(如MSMQ或RabbitMQ)并在单独的应用程序中处理您的上传。这样,您的Web层就与业务流程脱钩,并且您可以根据需要独立扩展每个部分。

0

你应该看看SignalR(https://github.com/SignalR/SignalR)这是构建Web网页库在客户端和服务器之间进行非常简单的通信。

如果您想知道如何进行后台处理,您可以使用线程旋转即使在网页返回给用户之后仍会运行的线程。在StackOverflow和Web上有很多这样的例子。

0

我见过这样做的一个简单方法是使用ThreadPool.QueueUserWorkItem以及跟踪状态后台线程的静态列表。

相关问题