【发布时间】:2015-04-06 20:55:46
【问题描述】:
我有一个 ASP.NET WebForm 应用程序 - 一个承载大量 IFRAME“小部件”的主页。当主页加载时 - 小部件的页面也会加载并开始它们自己的处理,包括连接到 SQL Server 以运行存储过程。
如果用户需要取消这些 IFRAME 处理,最好的方法是什么?我可能会从客户端将他们的 SRC 设置为另一个/空白页面,从而取消请求,但是如果 IFRAME 页面已经调用 SQL Server - 我如何也取消 SQL 处理?
编辑:为了澄清 IFRAMEd 页面中最慢的一点是 SQL Server 存储过程调用,所以基本上这归结为 - 我可以从客户端启动取消 SQL 命令吗?
【问题讨论】:
-
@Yurjy 设置 SRC 可能会取消 IFRAME 中页面的加载,但它可能不会停止当前在 Web 服务器上运行的线程。这意味着查询将在服务器上完全运行,然后响应将被丢弃。这是我的假设,我不太确定。我建议研究 ASP.net 中的异步编程。也是。
-
奇怪的事情 - 设置 SRC 确实会改变页面,但只是暂时的,当长时间运行的完成处理时 - 它再次出现在 iframe 中..
-
@sallushan - “可能”?绝对不会。
-
@YuriyGalanter - 考虑
SqlCommand.CommandTimeout和SqlCommand.Cancel。要使用后者,您当然需要能够从另一个线程获取命令实例,这需要设计/构建额外的基础设施。另外,还有 ASP.NET 序列化相同会话请求的问题 - 如果它们没有标记为会话只读。 -
@YuriyGalanter - 是的,stackoverflow.com/questions/4506273/… - 这应该让此类页面的同一会话请求并行运行
标签: asp.net sql-server iframe cancellation long-running-processes