我正在编写一个网络服务,它通过存储过程将长时间运行的批量插入命令发送到 sql 数据库。我不希望 web 服务在等待来自数据库的响应时挂起,所以我只想返回一个 http 响应,让客户端知道在我开始任务后请求已发送到数据库。但是一旦我返回响应,任务就会失去上下文并变成垃圾,对吧?我该如何保持它的活力?
最佳答案
一般来说,从 IIS 中分离出一些东西来做工作并不是一个好主意。如果 AppPool 重新启动会怎样?如果出现异常会怎样?
相反,我建议编写一个 Windows 服务并让它负责工作。
根据您的意见,我会看看您是否可以提出以下要求(理论上):
所有外部调用都是通过网络服务完成的。 Web 服务使用单独的程序集进行实际数据访问。
单独的 Windows 服务用于长时间运行的进程,该进程也将使用与 Web 服务相同的数据访问程序集。
这确实是最好的方法(但根据要求不一定可行)。
关于c# - 在调用任务的方法退出后,如何使任务保持事件状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23160282/