Erreur ASP 0177: 8007007e Serveur.CreateObject échoue pour COM DLL
Nous avons été d'essayer d'installer une DLL COM sur un nouveau serveur. L'interface est Classique ASP. La Carte Connecteur DLL semble être le problème, mais c'est ce que je suis en mesure d'obtenir.
Nous sommes incapables d'obtenir les pages servies par le serveur IIS pour donner rien d'autre qu'une erreur 500.
Lors du suivi de l'ASP:
127. -ASP_SCRIPT_TRACE_COM_CALL_END FilePath C:\INETPUB\WWWROOT\MILER\GLOBAL.ASA LineNumber 6 CurrentStatement ensemble g_pcmsrv=Server.CreateObject("PCMServer.PCMServer") SizeOfStatement 55 0 ms 128. -ASP_LOG_ERROR LineNumber 6 ErrorCode ASP 0177 : 8007007e Description Serveur.CreateObject Échoué
La DLL est PCMSRV32.DLL
dans c:\windows
MONDIALE.ASA:
Sub Application_OnStart
set g_pcmsrv=Server.CreateObject("PCMServer.PCMServer")
set application("g_pcmsrv") = g_pcmsrv
set g_pcmmapmgr=Server.CreateObject("Pcmgole.PCMMapMgr")
set application("g_pcmmapmgr") = g_pcmmapmgr
End Sub
Sub Session_OnStart
set Session("currentTrip") = application("g_pcmsrv").NewTrip("NA")
set Session("map") = application("g_pcmmapmgr").createMap()
End Sub
Sub Session_OnEnd
set Session("currentTrip") = Nothing
set Session("map") = Nothing
End Sub
Sub Application_Onend
Set application("g_pcmsrv")=Nothing
Set application("g_pcmmapmgr")=Nothing
End Sub
A la dll été déplacé ou renommé - voir support.persits.com/show.asp?code=ps02061296 ou chilkatsoft.com/p/p_474.asp
Comme @John liens elle n'est probablement pas enregistrés à l'aide d'
Comme @John liens elle n'est probablement pas enregistrés à l'aide d'
regsvr32 dllname
, aussi n'oubliez pas d'utiliser la bonne version dans de multiples environnements en architecture. Si le web IIS Application de la Piscine fonctionne en 32 bits mode, alors vous devez utiliser la version 32 bits regsvr32
pour enregistrer le fichier DLL par exemple.OriginalL'auteur Karen Raymond-Hart | 2016-03-13
Vous devez vous connecter pour publier un commentaire.
Les conseils ci-dessous se rapporte à la fois
Server.CreateObject
etCreateObject
utiliser dansvbscript jscript vba
Le Serveur Web des sections spécifiques à asp-classic mais encore la peine de lire.
Quelles sont les Causes de Cette erreur?
est causée le plus souvent lorsque les Applications Web sont déplacés à partir d'un Serveur Web à un autre sans une compréhension de la COM externe des composants qui sont utilisés et enregistrés avec le serveur Web.
L'identification de la Source de l'Erreur
Si vous utilisez des composants COM à l'intérieur d'une application Web ASP, vous verrez une ligne comme ceci
Généralement l'erreur de point à la
Set
ligne qui rend l'identification de la cause plus facile (heureusement que vous avez quelques belles trace de code en place, donc c'est encore mieux).Que faire Si Vous Ne Savez pas Où Se Trouve la DLL?
La chaîne à l'intérieur de la
CreateObject
méthode est connue comme uneProgId
et est utilisé comme identificateur de clé à l'intérieur de la base de Registre Windows qui peuvent être trouvés à l'intérieur de laet, par extension,
Chaque fois que le processeur ASP rencontre un
ProgId
il tente de parler le Registre de Windows et de trouver un correspondant clé qui indique l'emplacement de la COM enregistré accessible DLL.Une approche commune pour ce qui est de la clé contient une sous-clé appelée
CLSID
qui pointe vers le GUID de la Classe pour les inscrits associés DLL. Une fois la clé GUID est situé dans lede la ruche, il peut être utilisé pour trouver l'emplacement par la recherche dans la sous-clé
le cas où le site sera stocké dans le
(default)
valeur.Pas
ProgId
pourPCMServer.PCMServer
dans le Registre?Si vous ne pouvez pas trouver le correspondant
ProgId
dans le registre, il est probablement attribuable à l'une de ces deux raisons, nous allons développer ici.Comment enregistrer une DLL COM avec Windows
COM Dll peuvent être enregistrés et ont le correspondant entrées de Registre créées par l'exécution de l'
regsvr32.exe
outil à partir de l'Invite de Commande de Windows à l'aide des autorisations élevées (cela varie d'une version à la version de Windows).Avant de continuer si l'architecture à la fois le Système d'Exploitation et le mode utilisé par l'application Web ASP sont très importants.
Le matériel le plus récent est 64 Bits, ce qui crée une énigme dans Windows qu'il a maintenant en charge les nouveaux architecture en 64 bit et encore maintenir la prise en charge pour l'architecture 32 bits. La solution de Microsoft a été de diviser l'OS en deux, de sorte que nous avons 64 bits éléments et 32 bits éléments. L'OS principal de programmes sont divisés en deux dossiers (uniquement sur 64 bits OS parce qu'un OS 32 Bits n'a pas à composer avec 64 Bits, même si le matériel est capable de faire ça).
Sur une version 64 Bits de l'OS, les Programmes Système sont situés dans
Pour la version 64 Bits de programmes
Pour la version 32 Bits de programmes
Cette condition s'applique également dans le Registre de Windows
64 Bits
32 Bits
Ainsi, par exemple, sur une version 64 Bits de Windows, la commande suivante va enregistrer le
PCMSRV32.DLL
dans les 32 Bits de Registre et de créer une DLL COM clés de registre.Pool d'Applications IIS
Que tout commence à l'appui de 64 Bits, y compris IIS, vous devez toujours être en mesure de soutenir l'héritage des applications qui prennent en charge uniquement 32 Bits COM, pour IIS introduit dans IIS 6.0 (à partir de Windows Server 2003 Service Pack 1) sous les paramètres de Pool d'Applications de la propriété configurable
Enabled32BitAppOnWin64
qui permet à l'Application de la Piscine pour s'exécuter en 32 Bits mode sur les versions 64 Bits de Windows.Avec cela à l'esprit avant de vous inscrire à la DLL COM pour savoir où vous devriez être en vous inscrivant, vous avez besoin de savoir si le Pool d'Applications est en cours d'exécution en 32 Bits Mode. Dans IIS 7.0 et au-dessus, vous pouvez simplement vérifier à partir de l'Application de la Piscine propriétés dans le Gestionnaire des services internet de l'application. Le paramètre est dans le
Advanced Settings
en vertu de laGeneral
section et est appeléEnable 32-Bit Applications
(peut également être configuré dans leapplicationHost.config
à l'aide deenable32BitAppOnWin64
en vertu de la<ApplicationPools>
section).Si
Enable 32-Bit Applications
est fixé àFalse
Le Pool d'applications IIS est en cours d'exécution en 64 Bits natif mode et tout COM Dll qui doivent être utilisés par l'Application Web ASP aurez besoin à l'appui de 64 Bits et être enregistré à l'aide de la version 64 Bits de
regsvr32.exe
être ajoutés dans la version 64 Bits du registre.Si
Enable 32-Bit Applications
est fixé àTrue
Le Pool d'Applications IIS est en cours d'exécution en 32 Bits et en Mode tout COM Dll qui doivent être utilisés par l'Application Web ASP devront être 32 Bits Dll COM et être enregistré à l'aide de la version 32 Bits de
regsvr32.exe
être ajoutés dans la version 32 Bits du registre.L'enregistrement de la DLL COM à l'Aide de la Version Incorrecte de
regsvr32.exe
Par exemple à l'aide de
pour enregistrer la DLL COM avec les 32 Bits du registre sur une version 64 Bits de Windows lorsque le Pool d'Applications IIS n'est pas en 32 Bits Mode ASP
500.100
erreur Interne du ServeurDLL COM Liste de contrôle
Qu'est-ce que le Pool d'Applications IIS Configuration Avancée des
Enable 32-Bit Applications
, car elle a un impact sur la façon dont vous vous inscrivez à la DLL COM?Est la DLL enregistrée à l'aide de l'architecture de la version spécifique de
regsvr32.exe
(si la version de Windows n'est pas compatible 64 Bits, utilisez la valeur par défaut) qui reflète le cadre deEnable 32-Bit Applications
?Ne le Registre de Windows contient un
ProgId
de la DLL dans l'architecture de l'endroit précis de laqui reflète le cadre de
Enable 32-Bit Applications
?Ne le
InprocServer32
clé de contenir le bon emplacement de la DLL?Dans le contexte du compte que j'utilise pour accéder à la DLL COM (ApplicationIdentity, le système local, service réseau, etc), puis-je avoir l'autorisation d'accéder à la fois à la physique de fichier DLL et entrées de registre?
Liens Utiles
%systemroot%\System32
(je sais il est dit 32 mais c'est à Microsoft de ne pas vouloir rompre leur contenu existant et de l'omi n'a pas de sens), alors que le 32 bits, les programmes sont stockés dans le% systemroot%\SysWOW64
dossier non l'inverse. C'est également le même pour le registre, de sorte d'avoir repris vos modifications.OriginalL'auteur Lankymart