队列.Net代码落后于执行

时间:2014-08-12 11:30:38

标签: javascript sql asp.net

我正在开发一个.Net应用程序,它有一个空白的.aspx页面,链接到代码隐藏(.aspx.cs)表。它由来自许多地方的JavaScript函数调用,这些函数使用查询字符串参数调用页面。

取决于参数 - 该页面运行2个存储过程系列。一个家庭创建记录 - 另一个家庭更新记录。然后,任何SQL错误都会通过电子邮件发送给我。

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

我的问题是......

如何“锁定”或“排队”aspx.cs页面执行/请求以确保页面的一个“实例”或“线程”在另一个之前完成?

1 个答案:

答案 0 :(得分:0)

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

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

与ASP.NET应用程序分开,您将拥有后台进程(Windows服务可能是最好的,计划的控制台应用程序也可以正常工作),它会定期检查该表以获取新记录。当它找到记录时,它会依次对每个记录执行相关的过程。

这使得Web应用程序在单个线程中处理记录时仍然是多线程的(您确实需要)。