在执行后排队.net代码

Queue .Net Code Behind Execution

本文关键字:net 代码 排队 执行      更新时间:2023-09-26

我正在研究一个。net应用程序,它有一个空白的。aspx页面链接到一个代码隐藏(.aspx.cs)表。它被JavaScript函数从许多地方调用,这些函数调用带有查询字符串参数的页面。

根据参数的不同,页面运行两类存储过程。一个家庭创建记录,另一个家庭更新记录。任何SQL错误都会通过电子邮件发送给我。

有一个错误,我怀疑是由于代码被快速连续执行两次-我收到一个唯一的主键约束错误。似乎是在INSERT发生之前第二次调用了该页。不幸的是,这会导致数据丢失。

我的问题是……

我如何"锁定"或"队列"aspx.cs页面执行/请求,以确保页面的一个"实例"或"线程"在另一个可能被触发之前完成?

将流程的调用与流程的执行分开。

基本上,您将向数据库中添加一个表作为"队列",其中的每个记录都包含执行所讨论的流程所需的信息。(从页面发布的数据,基本上,以及任何其他元数据,如排队的用户和排队的时间等)页面上的代码只会简单地在该表中插入一条记录。

与ASP分离。NET应用程序,你会有一个后台进程(一个Windows服务可能是最好的,一个预定的控制台应用程序也可以工作),定期检查表的新记录。当它找到记录时,它依次对每条记录执行相关的进程。

这允许web应用程序在单个线程中处理记录时仍然是多线程的(这是你肯定想要的)。