在asp.net webservice中,我有一个静态数据集,可以在首次访问时加载数据(已同步)。但是,当IIS回收应用程序池时,由于“集合已被修改;枚举操作可能无法执行”,因此抛出了异常。
循环将启动新进程,这将创建新的静态数据集,旧工作进程中的请求将不会访问新的静态数据集,如何修改集合?或者可能,旧的工作进程在请求结束之前立即终止?
或者我了解回收过程是否错误? IIS不是启动新的工作进程,而是在同一个工作进程中启动新的AppDomain?和旧的和新的appDomains共享相同的静态数据集?
答案 0 :(得分:1)
事实证明,此错误不是由回收过程引起的。在启动过程中,同步过早地将数据集返回到以后的请求/线程,而第一个请求/线程仍然填充它,导致“收集被修改”的异常。
正如经常那样,我正在寻找抽屉中的钥匙,我相信它应该在,而钥匙完全放在抽屉的桌子上。有时候,我只是感到震惊,它是精神而不是眼睛实际看到的。在这种情况下,在我发布问题之后,我意识到我在看错了,只是因为如果它是由回收过程引起的,我相信有人应该已经发布了答案。
谢谢大家! 振