2010-08-02 25 views
2

Dans le service Web asp.net, j'ai un jeu de données statique qui charge les données (synchronisées) lors de l'accès initial. Toutefois, lorsque IIS recycle le pool d'applications, une exception est levée en raison de la modification de la collection: l'opération d'énumération peut ne pas s'exécuter.IIS recycle provoque une erreur dans l'accès au jeu de données statique

Le recyclage commencera le nouveau processus, ce qui créera un nouvel ensemble de données statique, les demandes dans l'ancien processus de travail n'accèderont pas au nouveau jeu de données statiques, comment la collection a-t-elle été modifiée? Ou est-ce possible, l'ancien processus de travail se termine immédiatement avant la fin des demandes? Ou est-ce que je comprends mal le processus de recyclage? Plutôt que de démarrer un nouveau processus de travail, IIS démarre nouveau AppDomain dans le même processus de travail? et ancien et nouveau appDomains partageant le même jeu de données statique?

Répondre

1

Il s'avère que cette erreur n'est pas due au processus de recyclage. Dans le processus de démarrage, la synchronisation a renvoyé prématurément l'ensemble de données à une demande/thread ultérieure, alors que la première demande/thread est toujours en train de remplir l'objet, à l'exception de "Collection a été modifiée".

Comme je le fais souvent, je cherche la clé dans le tiroir, je crois qu'il devrait être, tandis que la clé se trouve parfaitement sur le bureau du tiroir. Parfois, je suis juste consterné que c'est l'esprit plutôt que l'œil voit réellement. Dans ce cas, après avoir posté la question, j'ai réalisé que je regardais la mauvaise chose, simplement parce que si c'est causé par le processus de recyclage, je suis sûr que quelqu'un devrait déjà poster la réponse.

Merci à tous! Zhen