
Ich verschiebe die Websites meiner Firma von einem Windows 2003x86-Server auf Windows 2008x64, auf dem IIS 7.5 läuft.
Mein Problem ist, dass alle DLLs, die auf dem alten Server einwandfrei liefen, jetzt bei jedem Aufruf einen Fehler verursachen. Ich erhalte lediglich einen allgemeinen Fehler wie:
Serverobjektfehler „ASP 0177: 800401f3“
Server.CreateObject ist fehlgeschlagen
/folder/scriptname.asp, Zeile 24
Nr. 800401f3
Die fehlerhafte Zeile lautet:
'23 lines of comments
set A0SQL_DATA = server.createobject("olddllname.Data")
'the rest of the script
Ich habe diese Site bereits in einem App-Pool ausgeführt, der auf den 32-Bit-Modus eingestellt ist. Aber ich erhalte den Fehler trotzdem.
Hat das schon mal jemand erlebt? Ich bin frustriert, weil alle Informationen, die ich nachschlage, besagen, dass ich den App-Pool nur so einstellen muss, dass er im 32-Bit-Modus läuft. Das habe ich getan, aber es funktioniert immer noch nicht. Was könnte ich sonst noch überprüfen?
Antwort1
AusHierwenn dies gefunden wird:
Dieser Fehler bedeutet „Ungültige Klassenzeichenfolge“ – mit anderen Worten, der Aufruf von CreateObject ist fehlgeschlagen, da das Namensobjekt vom OLE-Subsystem nicht gefunden werden kann. Ursachen sind:
Sie haben regsvr32 also doch nicht auf dem Server ausgeführt.
Sie haben regsvr32 ausgeführt, aber es wurde ein Fehler gemeldet.
Jemand hat die Sicherheit eines Teils der Registrierung geändert, wodurch verhindert wird, dass das OLE-Subsystem den gesamten oder Teile des HKEY_CLASSES_ROOT-Baums liest.
Der Name des Objekts, das Sie erstellen möchten, wurde falsch geschrieben oder ist falsch.
Stellen Sie fest, ob es sich um ein Berechtigungsproblem handelt
Da Sie von 03 auf 08 migrieren, haben Sie außerdem das IIS 6 Management Compatibility-Add-On installiert, das in der IIS-Rolle enthalten ist? Ich bin kein Experte für IIS oder ASP, daher hoffe ich, dass dies hilft.
Antwort2
Wahrscheinlich liegt es daran, dass Ihre DLL eine 32-Bit-DLL ist und die Anwendungspools in 64-Bit ausgeführt werden. Sie müssen den Anwendungspool, in dem Ihre Anwendung ausgeführt wird, in einen 32-Bit-Anwendungspool ändern. Siehe enable32BitAppOnWin64 unter:http://www.iis.net/ConfigReference/system.applicationHost/applicationPools/add
Sie können dies in der Benutzeroberfläche tun, indem Sie den Anwendungspool in der Liste der Anwendungspools auswählen (wählen Sie den Strukturknoten aus) und ihn über die erweiterten Einstellungen aktivieren.