代码运行时的ASP.NET应用程序日志/进度条

时间:2012-10-25 13:35:24

标签: c# asp.net .net progress-bar message-queue

我正在ASP表单webapplication中构建OCR扫描模块。您可能知道这样的操作可能需要一些时间。因此,我正在使用后台服务应用程序来响应运行代码的消息队列,因此用户甚至不必停留在同一网页上。

我想要做的是告知用户在服务运行时发生了什么。如果让我们说用户上传了5个文档,我希望看到这样的内容出现在文字,标签或转发器控件中。这些项目不必保存在数据库中,我不想这样做。

处理文件1 of 5
文件1使用代码6732842处理 处理文件2 of 5
文件2使用代码8732457处理 处理文件3 of 5
文件3使用代码8725347处理 处理文件4 of 5
文件4无法处理“没有OCR字符串识别”
处理文件5 of 5
文件5使用代码4372537处理 已完成:处理了收到的5份文件中的4份

如果发生错误,我希望看到类似的内容

发生错误。扫描过程已停止。

我有一些想法,但我不知道什么是最佳做法。

选项1:
我可以在静态类中保存上面的项目,让javascript每5秒发布一次。要得到 通过网络方法获得该值。

选项2:
当我让JavaScript每5秒发布一次时,我可以在会话中保存上面的项目,返回更新的会话对象。我不知道在使用服务应用程序时这是否可用。

如果您有任何其他选择(最好是更好的选项),那将非常适合。

提前完成。

2 个答案:

答案 0 :(得分:0)

将进度项保存在数据库中,为每个用户上传不同的ID,使用Web服务发布此数据。在浏览器中,使用JavaScipt从Web服务检索进度 当然,数据库需要定期删除,例如每个minitue。

答案 1 :(得分:0)

我希望我能给你一个有用的例子,但是你想要做的事情并不容易,而且由于你没有使用ASP.NET MVC这使得异步工作变得更容易,因此更加困难。您将需要编写一系列异步任务来为您完成一些工作。本文将为您提供一个良好的开端:http://blogs.msdn.com/b/tmarq/archive/2010/04/14/performing-asynchronous-work-or-tasks-in-asp-net-applications.aspx