2

asp.net Webサービスには、初回アクセス時にデータをロードする(同期された)静的データセットがあります。ただし、IIS がアプリ プールをリサイクルすると、「コレクションが変更されました。列挙操作が実行されない可能性があります」という理由で例外がスローされます。

リサイクルによって新しいプロセスが開始され、新しい静的データセットが作成されます。古いワーカー プロセスのリクエストは新しい静的データセットにアクセスしません。コレクションを変更するにはどうすればよいでしょうか? それとも、リクエストが終了する直前に古いワーカープロセスが終了する可能性はありますか?

それとも、リサイクルプロセスを間違って理解していますか? 新しいワーカー プロセスを開始するのではなく、IIS は同じワーカー プロセスで新しい AppDomain を開始しますか? 同じ静的データセットを共有する新旧の appDomains?

4

1 に答える 1

1

このエラーは、リサイクル プロセスが原因ではないことが判明しました。起動プロセスで、最初のリクエスト/スレッドがまだデータセットにデータを入力している間に、同期によってデータセットが途中で後のリクエスト/スレッドに返されたため、「コレクションが変更されました」という例外が発生しました。

よくあることですが、鍵は引き出しの机の上に完全にあるはずですが、引き出しの中にあるはずの鍵を探しています。時々、目ではなく心が実際に見えることに愕然とすることがあります。この場合、質問を投稿した後、間違ったものを見ていることに気付きました。リサイクル プロセスが原因である場合は、誰かが既に回答を投稿しているはずだからです。

皆さん、ありがとうございました!ジェン

于 2010-08-03T15:46:28.263 に答える