У меня есть веб-сайт, который позволяет пользователям загружать CSV-файл. Это вызывает службу, которая считывает информацию из csv, помещает ее в объекты DynamicEntity и вызывает службу CRM для создания / обновления объектов в CRM. Когда этот сервис создает / обновляет объект, он запускает другие плагины для применения определенных бизнес-правил. Эти правила также могут создавать или обновлять объекты в CRM.
Проблема в том, что количество дескрипторов процесса w3wp.exe, который вызывает веб-сайт, увеличивается каждый раз, когда объект создается или обновляется, и он никогда не возвращается.
Я попытался включить код сборки мусора в бизнес-правила, и это уменьшает количество дескрипторов процесса w3wp CRM (запускаемого сетевой службой), но не другого процесса w3wp. Должен ли я иметь методы Dispose в веб-службе, которая вызывает службу CRM?
Надеюсь, это имеет смысл. Я не слишком знаком с проблемами управления памятью, поэтому любая помощь приветствуется. Кто-нибудь может дать мне несколько советов о том, как это предотвратить?
Спасибо,
Neil
-> РЕДАКТИРОВАТЬ
Хорошо, количество дескрипторов увеличивается, когда я вызываю метод Service.Create (DynamicEntity). Я не думаю, что размещение какого-либо кода здесь было бы полезно. Когда я выхожу из метода / класса / сервиса, который содержит этот вызов, счетчик дескрипторов остается без изменений. Что мне нужно знать, так это то, что я должен управлять или CRM заботится (или не заботится, но я ничего не могу с этим поделать)
-> Другое Править
Правильно, вот как это работает.
1) У нас есть CRM и связанные с ним услуги
2) У нас есть другая служба, независимая от CRM, которая использует службы CRM (номер 1 выше) для создания объектов на основе передаваемой в нее информации CSV
3) У нас есть веб-сайт, который позволяет пользователю загружать csv и вызывает службу № 2 выше для создания / обновления сущностей в CRM
4) У нас есть плагины, запущенные CRM, которые используют Сервис 1 выше для создания / обновления сущностей
Таким образом, пользователь загружает CSV на веб-сайт (3), это запускает службу (2). Когда служба 2 создает объект с использованием службы 1, служба 4 запускается. Вызовы службы 4 также используют службу 1 для создания объектов, и при вызове этих служб (с использованием метода Service.Create ()) количество дескрипторов процесса увеличивается. Когда метод / класс / службы завершают работу, счетчик дескрипторов остается тем же самым, и поэтому, когда весь процесс происходит снова, счетчик дескрипторов снова увеличивается.