Мы переносим наши приложения с Windows Server 2003 на Windows Server 2008 R2. У меня проблемы с миграцией.
Я развернул множество компонентов COM + (32-разрядных) и компонентов DCOM (32-разрядных) в Windows Server 2008 R2. Эти компоненты COM + и DCOM являются кодом VC ++.
У меня 32-битная служба .net 3.5, развернутая на том же сервере, который вызывает компоненты COM +, упомянутые выше.
Всякий раз, когда я пытаюсь запустить Службу, она не запускается и выдает несколько ошибок в журнале событий.
Основной ошибкой, которую мы получаем, являются ошибки «Ошибка удаленного вызова процедуры» **. (** Ошибка вызова удаленной процедуры. (Исключение из HRESULT: 0x800706BE)) **** На основании наблюдения во время отладки объекты COM создан, но при вызове какого-либо метода создается исключение удаленной процедуры.
То же самое отлично работает в Win 2003 Server Box.
ERROR
1-я ошибка:
Неправильное имя приложения: dllhost.exe, версия: 6.1.7600.16385, отметка времени: 0x4a5bc6b7
Неверное имя модуля: KERNELBASE.dll, версия: 6.1.7600.16385, отметка времени: 0x4a5bdbdf
Код исключения: 0xe06d7363
Смещение ошибки: 0x0000b727
Идентификатор сбойного процесса: 0x8ac
Время запуска ошибочного приложения: 0x01cb437094216ea7
Неправильный путь к приложению: C: \ Windows \ SysWOW64 \ dllhost.exe
Неверный путь к модулю: C: \ Windows \ syswow64 \ KERNELBASE.dll
Идентификатор отчета: d25f6a31-af63-11df-8252-0050568e251b
2-я ошибка:
Система вызвала пользовательский компонент, и этот компонент вышел из строя и сгенерировал исключение. Это указывает на проблему с пользовательским компонентом. Сообщите разработчику этого компонента о сбое и предоставьте ему следующую информацию.
Идентификатор серверного приложения: {727318BC-A725-4ED6-8DDD-9DE80262D3CA}
Идентификатор экземпляра серверного приложения:
* * +1047 {739972C1-74DA-4169-A093-32AAAA965EC9}
Имя приложения сервера:
Серьезный характер этой ошибки привел к прекращению процесса.
Исключение: E06D7363
3-я ошибка:
Ковш неисправности, тип 0
Название события: APPCRASH
Ответ: Недоступно
Идентификатор кабины: 0
Подпись проблемы:
P1: dllhost.exe
P2: 6.1.7600.16385
P3: 4a5bc6b7
P4: KERNELBASE.dll
P5: 6.1.7600.16385
P6: 4a5bdbdf
P7: e06d7363
P8: 0000b727
P9:
P10
Прикрепленные файлы:
Эти файлы могут быть доступны здесь:
C: \ ProgramData \ Microsoft \ Windows \ WER \ ReportQueue \ AppCrash_dllhost.exe_58c2666ce94b9901a2cc454f2e8cd8cc5742421_085d298c
Символ анализа:
Перепроверка для решения: 0
Идентификатор отчета: d25f6a31-af63-11df-8252-0050568e251b
4-я ошибка:
Ковш неисправности, тип 0
Название события: APPCRASH
Ответ: Недоступно
Идентификатор кабины: 0
Подпись проблемы:
P1: dllhost.exe
P2: 6.1.7600.16385
P3: 4a5bc6b7
P4: KERNELBASE.dll
P5: 6.1.7600.16385
P6: 4a5bdbdf
P7: e06d7363
P8: 0000b727
P9:
P10
Прикрепленные файлы:
Эти файлы могут быть доступны здесь:
C: \ ProgramData \ Microsoft \ Windows \ WER \ ReportQueue \ AppCrash_dllhost.exe_58c2666ce94b9901a2cc454f2e8cd8cc5742421_085d298c
Анализ символа:
Перепроверка для решения: 0
Идентификатор отчета: d25f6a31-af63-11df-8252-0050568e251b
Статус отчета: 0
5-я ошибка:
Служба не может быть запущена. System.Runtime.InteropServices.COMException (0x800706BE): сбой удаленного вызова процедуры. (Исключение из HRESULT: 0x800706BE)
Мы проверили следующее на основе анализа,
1. Проблемы с разрешениями - проверено, имеют ли все пользователи, прошедшие проверку подлинности, IWAM_ServerName и IUSR_ServerName, полный контроль. На форуме видел, что у них должны быть разрешения на чтение / выполнение NTFS для некоторых системных папок. Не знаю, как это проверить.
2. Проблемы с DLL Hell - проверил регистрацию и все вроде нормально.
3. Проблемы «битности» процесса - Проверен реестр и все записи находятся в WoW6432, а все компоненты приложения являются 32-битными. В процессе отсутствуют вызовы для 64-битных компонентов. Также используется COM для 32 приложений.
4. Проблемы с FireWall - эта служба находится на том же компьютере, что и компонент COM. Должны ли мы изменить некоторые параметры, относящиеся к безопасности MSTDC, расширенной конфигурации брандмауэра, например, включить входящий COM +? Мы не уверены, так как мы настраиваем сервер впервые.
- Включение флажка «Запуск 32-разрядных приложений»
Но ничто из перечисленного не помогает.
Кроме того, мы пытаемся воспроизвести проблему с примерами компонентов. Мы создали компонент .NET и развернули его в COM +. Попытка доступа к нему через скрипт VB и консольное приложение C #, и он отлично работает в Windows 2003 box. То же самое не работает в Windows 2008 Server box. Мы не получаем ошибки RPC, но следующее:
Ошибка сценария vb: 800a01ad компонент activex не может создать объект
.net клиент, вызывающий com +: КЛАСС НЕ ИМЕЕТСЯ: HRESULT 0x80040154 (REGDB_E_CLASSNOTREG)
После того, как анализ обнаружил, что эти проблемы могут быть вызваны проблемами с разрешениями, dll-адом или проблемами "битности" процесса.
Было бы здорово, если бы кто-то помог нам в решении этой проблемы.
Спасибо,
Виджей