2016-07-15 9 views
1

Derzeit muss ich Webdienst für vorhandene Anwendung erstellen, die mit Visual FoxPro erstellt wird. Ich kann DLL-Klassenbibliothek kompilieren, generieren WSDL von DLL, aber diese DLL Aufruf von soapUI mit Wsdl gibt mir die folgende Fehlermeldung:Kann nicht mit Visual FoxPro erstellte DLL instanziieren

Instantiating the dispatch object for method companyadd failed

Auch ich kann nicht diese DLL öffnen in OLE/COM-Viewer. Es gibt folgenden Fehler: IClassFactory::CreateInstance failed Unspecified error E_FAIL($800004005)

Kann jemand mir eine Idee geben, wie ich den Grund des Problems aufklären kann?

Für einige DLLs von dieser App erstellt habe ich solche Fehler nicht.

Antwort

0

Zurück, als ich OLE/COM-Server in VFP erstellen musste, wurde es die meiste Zeit zu Berechtigungen. Selbst für das Erstellen müssten Sie VFP "Als Administrator ausführen" starten, damit die Einträge in die Windows-Registrierung geschrieben werden können.

Dann kommt der Fehler 800004005. Auch das basiert auf Berechtigungen (in meiner Erfahrung). Dazu musste ich immer von Windows auf die COM-Server-Konfiguration gehen.

Wenn Sie sich an 32/64 Bit erinnern, müssen Sie die DCOM-Konfiguration explizit im 32-Bit-Modus ausführen. so, von einer DOS-Befehlsfenster tun

MMC comexp.msc /32 

Dies teilt der DCOM-Konfiguration zu tun, um die 32-Bit-basierten COM-Server zu zeigen (VFP läuft nur unter 32-Bit-Modus)

Erweitern Sie dann die Treeview-Controller für Konsolenstamm -> Komponentendienste -> Computer -> Arbeitsplatz -> DCOM-Konfiguration. Scrollen Sie dann nach unten zu Ihrer Anwendung. Möglicherweise müssen Sie die GUID verwenden, wenn der Klassenname in der Liste nicht referenziert/angezeigt wird. Klicken Sie mit der rechten Maustaste darauf und wählen Sie Eigenschaften. Auf der Registerkarte "Identität" können Sie angeben, welches Konto für den Zugriff auf das COM-Objekt verwendet werden soll. Stellen Sie für TESTEN UND BESTÄTIGEN das Benutzerkonto auf Administratorkonto und versuchen Sie es. Sobald dies bestätigt ist, wissen Sie, ob es sich um einen Zugriffsberechtigungszugriff handelt oder nicht. Dann entferne den Admin und lege einen anderen Benutzeraccount nieder. Wenn dies fehlschlägt, müssen Sie sicherstellen, dass der "Benutzer" über ausreichende Berechtigungen für alle Pfade verfügt, die möglicherweise für Ihren Prozess verwendet werden.

Hoffentlich hilft das, aber wieder, das meiste davon war von Jahren her COM-Server mit VFP.

Verwandte Themen