2010-08-02 3 views
2

В asp.net webservice у меня есть статический набор данных, который загружает данные (синхронизируется) при первом доступе. Однако, когда IIS перерабатывает пул приложений, у меня есть исключение, потому что «Collection был изменен, операция перечисления может не выполняться».IIS recycle вызывает ошибку при доступе к статическому набору данных

Recycle начнет новый процесс, который создаст новый статический набор данных, запросы в старом рабочем процессе не будут получать доступ к новому статическому набору данных, как может быть изменена коллекция? Или это возможно, старый рабочий процесс завершается непосредственно перед завершением запроса?

Или я понимаю, что процесс переработки неправильный? Вместо запуска нового рабочего процесса IIS запускает новый AppDomain в том же рабочем процессе? и старые и новые приложения, использующие один и тот же статический набор данных?

ответ

1

Оказалось, что эта ошибка не вызвана процессом рециркуляции. В процессе запуска синхронизация преждевременно возвращала набор данных для последующего запроса/потока, в то время как первый запрос/поток все еще заполняет его, в результате чего исключение «Collection было изменено».

Как это часто бывает, я ищу ключ в ящике, я считаю, что он должен находиться, а ключ лежит на столе ящика. Иногда я просто потрясен тем, что на самом деле видит ум, а не глаза. В этом случае, после того, как я опубликовал вопрос, я понял, что искал не то, потому что, если это вызвано процессом переработки, я уверен, что кто-то должен уже опубликовать ответ.

Спасибо всем! Zhen