Устаревшие приложения C++ с иногда печально известными проблемами утечки памяти должны вызываться из приложения Windows на базе сервера .Net. Время сборки мусора .Net невозможно определить, и иногда объект С++ уничтожается или не уничтожается «вовремя», что приводит к непредсказуемым результатам и, как правило, к сбою веб-приложения С#. Каков наилучший способ помещать объекты С++ в стек сборки мусора как можно чаще, но не так часто, чтобы удалить ссылку .Net на объект COM. Имейте в виду, что COM-объекты могут порождать подобъекты, поэтому счетчик ссылок .Net на COM-объекты может изменяться только вызовом функции, а не обязательно созданием экземпляра.
Поскольку происходят утечки памяти, а COM-объекты не очищаются, производительность снижается до такой степени, что IIS несколько раз отключается сам по себе, а затем аварийно завершает работу. Перезапуск IIS устраняет проблему до следующего раза. Периодические перезагрузки помогают, но напряженный день может вызвать это в течение рабочего дня.
Мне пришлось решить эту проблему с помощью .Net 1.1 пару лет назад. Интересно, было ли у кого-то еще мое решение или лучшее. Это НЕ ASP.NET. Это .Net DLL.
Окончательный результат не был полностью удовлетворительным, и каждые несколько месяцев веб-сервер давал сбой.