asp.net – 使用冗长的服务器进程取消asynch回发
发布时间:2020-12-16 09:34:16 所属栏目:asp.Net 来源:网络整理
导读:我在取消异步回发时遇到了一些麻烦.我有一个更新面板,其中包含一个取消按钮,以便用户可以取消回发.当用户单击按钮以生成报告时,将显示更新进度.该报告可能需要一些时间,因为它必须循环一千次左右才能创建一个Excel电子表格.如果用户因任何原因决定取消运行报
我在取消异步回发时遇到了一些麻烦.我有一个更新面板,其中包含一个取消按钮,以便用户可以取消回发.当用户单击按钮以生成报告时,将显示更新进度.该报告可能需要一些时间,因为它必须循环一千次左右才能创建一个Excel电子表格.如果用户因任何原因决定取消运行报告,则可以单击取消按钮,然后在
javascript中调用abortPostBack(),这将停止更新进度并再次显示该页面.但是,用户无法执行任何其他操作,例如导航到另一个页面,因为服务器仍在处理循环.当用户点击取消按钮时,如何停止服务器处理的循环?任何帮助赞赏!
解决方法
您是说在异步回发完成之前,客户端无法访问简单的HTTP链接?如果是这样,这听起来像一个难题,因为您要么必须优化服务器端进程,要么设置较小的服务器端请求超时.要么重新设计用户交互,要么使服务器端Excel生成过程成为异步,而不是同步,这样用户就不必等到Excel生成完成.你可以在客户端看上去然后设置一个
JavaScript计时器来定期查询服务器以查看文件是否准备就绪,如果是,请向用户表明并给他们一个下载文件链接选项,或者其他什么.
否则,如果您可以在等待返回时调用另一个AJAX请求(您可能不会听到它),您可以简单地执行一个“取消”长时间运行进程的新HTTP请求.但这似乎不起作用,因为服务器仍在处理长时间运行的HTTP请求.所以我选择调查我的第一段中的选项. 如果取消确实允许在客户端执行异步HTTP请求,则可以设置会话状态值以指示已请求取消.就个人而言,我不会这样做.但是如果你这样做了,那么你长期运行的服务器端进程可能会定期查找是否存在会话值.说: if (Session["cancel-me"] != null) { Session["cancel-me"] = null; abortThisLongProcess(); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – 使用内联代码测试Container.DataItem
- asp.net-mvc – ASP.NET MVC – 强类型视图模型,它属于哪里
- 在ASP.Net应用程序和最佳实践中使用WCF
- 如何编写没有Try/Catch的程序
- ASP.NET重定向到默认重定向URL以外的页面
- asp.net-mvc-4 – Azure计算模拟器中MVC4 Web API runnin中
- asp.net-mvc – MvcSiteMap:未到达动态节点提供程序
- asp.net – ASMX Web服务 – 返回具有属性的用户定义类
- asp.net-mvc – 使用mvc-mini-profiler
- asp.net-web-api – 当启用CORS时,ASP.NET Web API中的异常
推荐文章
站长推荐
热点阅读