2

在 asp.net 网络服务中,我有一个静态数据集,可在首次访问时加载数据(同步)。但是,当 IIS 回收应用程序池时,由于“集合已修改;枚举操作可能无法执行”而引发异常。

回收会启动新进程,新进程会创建新的静态数据集,旧工作进程中的请求不会访问新的静态数据集,如何修改集合?还是有可能,旧的工作进程在请求完成之前立即终止?

还是我对回收过程的理解有误?IIS 不是启动新的工作进程,而是在同一个工作进程中启动新的 AppDomain?新旧 appDomain 共享相同的静态数据集?

4

1 回答 1

1

事实证明,这个错误不是由回收过程引起的。在启动过程中,同步过早地将数据集返回给后来的请求/线程,而第一个请求/线程仍在填充它,导致“集合已修改”异常。

像往常一样,我在抽屉里寻找钥匙,我相信它应该在里面,而钥匙完美地放在抽屉的桌子上。有时,我只是对实际看到的是头脑而不是眼睛感到震惊。在这种情况下,在我发布问题后,我意识到我看错了,仅仅是因为如果它是由回收过程引起的,我相信应该已经有人发布了答案。

谢谢你们!甄

于 2010-08-03T15:46:28.263 回答