Мы устраняли неполадки в следующем и ищем новые идеи или ракурсы атаки.
Первый сценарий:
У нас есть веб-приложение ASP.NET - .NET 3.5, C #, построенный для x86 - работает на IIS7 / Windows Server 2008 R2 (64 бит).Веб-приложение ASP.NET работает в пуле приложений по умолчанию с включенными 32-разрядными приложениями.
В этом веб-приложении используются некоторые устаревшие компоненты, написанные на VB6 и созданные как библиотеки ActiveX DLL.Библиотеки регистрируются с помощью regsvr32.Ссылки на эти компоненты добавляются в проект веб-приложения (Visual Studio 2008), и мы используем сгенерированные классы Interop.
Когда веб-приложение построено в режиме выпуска, ошибки генерируются устаревшим кодом изрядноглубоко в стеке подпрограмм каждый раз, когда делается вызов этим устаревшим компонентам VB6.Обычно это что-то вроде:
ОШИБКА 91 Переменная объекта или С переменной блока не задано [ComponentName: ClassName.cls: MethodName]
Когда тот же код веб-приложения создается в режиме отладки,происходят те же ошибки, но они периодически.Если одно и то же действие повторяется в веб-приложении 10 раз (одни и те же входные данные при прочих равных условиях), мы увидим проблему примерно один раз.
Второй сценарий:
В дополнение к Интернетуприложение, у нас есть приложение .NET 3.5 C #, созданное для x86, которое работает как служба Windows на Windows Server 2008 R2 (64-разрядная версия).Эта служба выполняет вызовы ActiveX EXE, которые связаны с библиотеками DLL, используемыми на веб-сайте (общее наследие и зависимости).ActiveX EXE регистрируется с помощью ключа / regserver и ссылки, добавленной в проект .NET.Сгенерированные классы Interop используются.Как и в ActiveX EXE-файлах, вызовы методов выполняются асинхронно в своем собственном потоке и используют события для уведомления вызывающей стороны о завершении.
Если приложение .NET построено в режиме Release, вызовы методов в EXE не выполняются.выдает ошибки (насколько я могу видеть), но приложение .NET не получает событие, которое должно быть вызвано в EXE-файле ActiveX.
Если встроен тот же код приложения .NETВ режиме отладки, событие вызывается EXE-файлом и принимается / обрабатывается приложением .NET.
Я опубликовал эти проблемы вместе, потому что они оба меняются в зависимости от сборки выпуска и отладки, и я догадываюсь, что причинысвязанные с.В настоящее время мы фокусируемся на потенциальных проблемах со сборкой мусора и внепроцессной работой, выполняемой с помощью ActiveX EXE, и на проблемах с многопоточностью в веб-приложении.Любые идеи относительно областей, которые мы должны исследовать, будут приветствоваться.