Nous migrons nos applications de Windows Server 2003 vers Windows Server 2008 R2. Je suis confronté à quelques problèmes avec la migration.Problèmes de portage des applications COM + de Windows 2003 vers Windows 2008 Server
J'ai déployé de nombreux composants COM + (32 bits) et composants DCOM (32 bits) dans Windows Server 2008 R2. Ces composants COM + et DCOM sont du code VC++.
J'ai un service .net 3.5 32 bits déployé dans le même serveur, qui appelle les composants COM + mentionnés ci-dessus.
Chaque fois que j'essaie de démarrer le service, il ne démarre pas et génère plusieurs erreurs dans le journal des événements. L'erreur principale que nous obtenons est l'erreur d'échec de l'appel de procédure distante **. (** L'appel de procédure distante a échoué. (Exception de HRESULT: 0x800706BE)) **** Basé sur l'observation pendant le débogage, les objets COM sont créés, mais lorsqu'une méthode est appelée, l'exception de procédure distante est levée.
La même chose fonctionne très bien dans un Win 2003 Server Box.
erreur
1ère erreur:
Faulting application name: dllhost.exe, version: 6.1.7600.16385, time stamp: 0x4a5bc6b7
Faulting module name: KERNELBASE.dll, version: 6.1.7600.16385, time stamp: 0x4a5bdbdf
Exception code: 0xe06d7363
Fault offset: 0x0000b727
Faulting process id: 0x8ac
Faulting application start time: 0x01cb437094216ea7
Faulting application path: C:\Windows\SysWOW64\dllhost.exe
Faulting module path: C:\Windows\syswow64\KERNELBASE.dll
Report Id: d25f6a31-af63-11df-8252-0050568e251b
2ème erreur:
The system has called a custom component and that component has failed and generated an exception. This indicates a problem with the custom component. Notify the developer of this component that a failure has occurred and provide them with the information below.
Server Application ID: {727318BC-A725-4ED6-8DDD-9DE80262D3CA}
Server Application Instance ID:
{739972C1-74DA-4169-A093-32AAAA965EC9}
Server Application Name:
The serious nature of this error has caused the process to terminate.
Exception: E06D7363
3ème erreur:
Fault bucket , type 0
Event Name: APPCRASH
Response: Not available
Cab Id: 0
Problem signature:
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:
Attached files:
These files may be available here:
C:\ProgramData\Microsoft\Windows\WER\ReportQueue\AppCrash_dllhost.exe_58c2666ce94b9901a2cc454f2e8cd8cc5742421_085d298c
Analysis symbol:
Rechecking for solution: 0
Report Id: d25f6a31-af63-11df-8252-0050568e251b
4ème erreur:
Fault bucket , type 0
Event Name: APPCRASH
Response: Not available
Cab Id: 0
Problem signature:
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:
Attached files:
These files may be available here:
C:\ProgramData\Microsoft\Windows\WER\ReportQueue\AppCrash_dllhost.exe_58c2666ce94b9901a2cc454f2e8cd8cc5742421_085d298c
Analysis symbol:
Rechecking for solution: 0
Report Id: d25f6a31-af63-11df-8252-0050568e251b
Report Status: 0
5ème erreur:
Service cannot be started. System.Runtime.InteropServices.COMException (0x800706BE): The remote procedure call failed. (Exception from HRESULT: 0x800706BE)
Nous avons vérifié les points suivants en fonction de l'analyse,
1. L'autorisation délivre - Cochez cette case si tout le monde, les utilisateurs authernticated, IWAM_SERVERNAME et IUSR_ServerName ont plein contrôle. Vu dans un forum qu'ils devraient avoir des autorisations de lecture/exécution NTFS sur certains dossiers du système. Ne sait pas comment vérifier cela.
2. DLL enfer problèmes - Enregistrement vérifié et tout semble bien se passer.
3. Traiter les problèmes de 'bitness' - Registre vérifié et toutes les entrées sont sous WoW6432 et toutes les composantes de l'application sont de 32 bits. Il n'y a pas d'appels en cours aux composants 64 bits. Également utilisé COM pour 32 applications.
4. Problèmes FireWall - Ce service se trouve dans la même machine que le composant COM. Devrions-nous modifier certains paramètres liés à la sécurité MSTDC, configuration avancée de pare-feu comme activer COM + entrant? Nous ne sommes pas sûrs car nous configurons le serveur pour la première fois.
- case Activer la vérification "Exécuter les applications 32 bits de
Mais aucune de ce qui précède aide les.
Nous essayons également de répliquer le problème avec des exemples de composants. Nous avons créé un composant .NET et l'avons déployé dans COM +. J'ai essayé d'y accéder via le script VB et l'application console C# et cela fonctionne très bien dans la boîte de Windows 2003. La même chose ne fonctionne pas dans Windows 2008 Server. Nous ne recevons pas des erreurs RPC, mais ce qui suit,
vb script error :800a01ad activex component cant create object
.net client invoking com+ : CLASS NOT REGISTERED : HRESULT 0x80040154 (REGDB_E_CLASSNOTREG)
Après analyse a révélé que ces problèmes peuvent être dus à des problèmes d'autorisation, l'enfer dll ou processus de questions »bitness de.
Ce serait génial si quelqu'un pouvait nous aider à résoudre ce problème.
Merci, Vijay
+1. Vous avez peut-être raison de savoir pourquoi il se bloque, mais pas de savoir comment le réparer. Vous voyez, le code C++ ne peut pas être empêché de lancer des exceptions - de temps en temps, quelque chose se passe mal et une exception peut être levée. S'il se concentre sur l'enquête sur ce cas, il perd juste du temps. La vraie solution consiste à ne pas autoriser les exceptions à se propager via la limite COM. Spécifiquement, chaque fonction qui peut être appelée via COM doit capturer ** toutes les exceptions ** possibles qui pourraient être jetées à l'intérieur et les traduire en HRESULTs et IErrorInfo. – sharptooth