我有一个ASP.NET WebForm应用程序 - 一个托管一堆IFRAME"小部件"的主页面。当主页加载时 - 小部件'页面也加载并开始自己的处理,包括连接到SQL Server以运行存储过程。
如果用户需要,取消那些IFRAME处理的最佳方法是什么?我可以将他们的SRC从客户端设置为另一个/空白页面,从而取消请求,但如果IFRAME页面已经调用SQL Server - 我如何取消SQL处理呢?
编辑:为了澄清IFRAMEd页面中最慢的点是SQL Server存储过程调用,所以基本上归结为 - 我可以从客户端开始取消SQL命令吗?
答案 0 :(得分:2)
我想到的一个解决方案是拥有静态List
当前正在运行SqlCommands
,每当用户调用取消时,您都可以从此静态列表中提取命令,然后取消它。正在执行该命令的页面将收到命令取消异常,然后它可以正确处理它。
以下是您需要处理的事项:
SqlCommand
并调用它{ {1}}方法。<强>更新强>
我在这里添加一些细节,
Cancel
中,因此新控制器应该可以正常工作Global.ascx
(作为密钥)传递给Cancel Controller 正如您可能已经看过该项目一样,它使用PageName
作为密钥从PageName
中提取SqlCommand
。因此,我们有上述限制。由于多个List
的{{1}}会相同。
要克服此限制,您可以生成PageName
作为密钥,并将SqlCommand
中的GUID
传递到GUID
和QueryString
页面,以便它们使用这些Form1.aspx
在Form2.aspx
中添加命令。这些密钥应该在主机页面呈现时或在JavaScript中生成。
如果您不想使用RnD,则此处是使用List
作为密钥的更新项目。 :) http://goo.gl/I86S7Z