Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
在 asp.net 网络服务中,我有一个静态数据集,可在首次访问时加载数据(同步)。但是,当 IIS 回收应用程序池时,由于“集合已修改;枚举操作可能无法执行”而引发异常。
回收会启动新进程,新进程会创建新的静态数据集,旧工作进程中的请求不会访问新的静态数据集,如何修改集合?还是有可能,旧的工作进程在请求完成之前立即终止?
还是我对回收过程的理解有误?IIS 不是启动新的工作进程,而是在同一个工作进程中启动新的 AppDomain?新旧 appDomain 共享相同的静态数据集?
事实证明,这个错误不是由回收过程引起的。在启动过程中,同步过早地将数据集返回给后来的请求/线程,而第一个请求/线程仍在填充它,导致“集合已修改”异常。
像往常一样,我在抽屉里寻找钥匙,我相信它应该在里面,而钥匙完美地放在抽屉的桌子上。有时,我只是对实际看到的是头脑而不是眼睛感到震惊。在这种情况下,在我发布问题后,我意识到我看错了,仅仅是因为如果它是由回收过程引起的,我相信应该已经有人发布了答案。
谢谢你们!甄