经过多年的编程,我需要第一次异步地做一些事情(因为这需要几分钟,网页就会超时--反正也不想让用户等那么久)。这个动作只由少数人完成,但每天可以做几次(每个人都这样)。
通过使用LINQ对ASP.NET网页进行“保存”单击,我将将一条记录插入Server表中。这将触发一个SSIS包,将该记录推送到全国其他几个数据库。
所以..。
我在这个站点上读到了一些关于它的线程,但是它们是2009年的线程,所以不确定Visual 2012/.NET Framework4.5(我们仍然在使用SQLServer2008Framework4.5)是否有很大不同。
发布于 2013-03-20 23:40:08
在ASP.Net中执行长期运行的任务通常是个坏主意。首先,如果在任务完成之前回收应用程序池,那么它就会丢失。
我建议将请求写入数据库表,并使用单独的Windows来完成长期运行的工作。它可以更新数据库表中的状态列,稍后可以检查该列,以查看任务是否完成,以及是否存在错误。
发布于 2013-03-21 00:10:06
您可以在SQL端使用Service;它是Server实现消息队列的工具。很好的例子这里和这里
您要做的是创建Service服务并定义一些脚手架(队列、消息类型等)。然后创建一个服务“激活”过程,它基本上是一个消耗队列消息的存储过程。例如,这个SP将接收一条带有表中记录ID的消息,然后继续对它做任何需要做的事情,可能在完成时发送一封电子邮件,等等。
因此,通过代码隐藏,您可以调用一个简单的存储过程,它将用户的数据插入到一个表中,并向队列发送一条消息,例如,新记录的ID,然后立即返回。我想你应该提前告诉用户,这可能需要几分钟,他们会收到一封电子邮件,等等。
Service的好处是消息传递几乎是有保证的--即使您的SQL Server在消息排队后立即崩溃,当您重新启动消息时,激活SP也会重新启动,因此它非常健壮。
https://stackoverflow.com/questions/15536801
复制相似问题