Announcement

Collapse
No announcement yet.

SOAP / DCOM-Konfiguration / Schwerwiegender Fehler

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • SOAP / DCOM-Konfiguration / Schwerwiegender Fehler

    Hallo!
    Ich habe folgendes Problem: Ich habe einen SOAP-Server entwickelt, der über eine DCOM-Schnittstelle auf eine andere Anwendung (Datenserver), die sich auf dem gleichen Rechner befindet, zugreifen soll. Leider erhalte ich immer die Meldung "Schwerwiegender Fehler", wenn mein SOAP-Server versucht, die DCOM-Verbindung zum Datenserver herzustellen. SOAP an sich klappt bestens, aber ich kann leider keinen DCOM-Zugriff zu meiner anderen Anwendung herstellen. Nach einigen Versuchen habe ich herausgefunden, dass es funktioniert, wenn die Anwendung NICHT gestartet ist, dann ist eine DCOM -Verbindung möglich. Ist sie gestartet, gibt es den "Schwerwiegenden Fehler".
    Der SOAP-Server läuft im IIS.

    Aufgefallen ist mir auch, das in den Komponentendiensten in der DCOM-Konfiguration für meine Anwendung "Datenserver" (auf die über den SOAP-Server zugegriffen werden soll) auf der Registerseite "Ausführungsort" die Checkbox "Anwendung auf diesem Computer audführen" nicht gesetzt und deaktiviert ist.

    Mein Datenserver lässt sich übrigens mit einer kleinen Testapplikation ohne Probleme über DCOM starten oder erlaubt im laufenden Betrieb eine DCOM-Verbindung. Nur der SOAP-Server kann es nicht!!!!

    Kann mir jemand helfen???

  • #2
    Ich würde auf ein Sicherheits-Problem Tippen.
    Die SOAP-Anwendung läuft unter einem bestimmten Konto die die COM-Komponente nicht starten/ausführen darf.

    Kannst Du den SOAP-Server mal unter deinem Konto laufen lassen

    Comment


    • #3
      Hallo Bernhard Geyer,

      Die SOAP-Anwendung läuft jetzt unter meinem Konto. Das hat die Sache leider nicht verbessert.

      Ich habe vieles getestet und habe folgende Ergebnisse erhalten:
      1. Die DCOM-Anwendung lässt sich über ein kleines Delphi-Prog über DCOM problemlos starten bzw. läuft die Anwendung bereits, kann ohne Probleme über DCOM darauf zugegriffen werden.

      2. Meine SOAP-Anwendung kann meine DCOM-Anwendung starten und darauf zugreifen. Die Anwendung ist aber nicht sichtbar (Trotz Einstellung "Interaktiver Benutzer")! Läuft die DCOM-Anwendung bereits (was sie muss), kommt es beim Zugriff über die SOAP-Anwendung zum "Schwerwiegenden Fehler".

      Der Proccess Explorer von Sysinternals liefert folgende Informationen:

      1. Startet die SOAP-Anwendung meine DCOM-Anwendung, so läuft diese unter meinem Konto. Es gibt im Process Explorer einen Schalter, der die Anwendung in den Vordergrund bringen kann. Hierbei wird aber die Meldung ausgegeben, das keine sichtbaren Fenster für diesen Prozess gefunden wurden. Der übergeordnete Prozess ist der svchost.exe.

      2. Wird die DCOM-Anwendung über mein Delphi-Testprog. gestartet, ist sie sichtbar. Der Schalter, der die Anwendung in den Vordergrund bringen soll, arbeitet einwandfrei. Das Benutzerkonto ist ebenfalls meins und der übergeordnete Prozess ist ebenfalls svchost.exe

      Jetzt noch ein weiteres Phänomen:
      Wird meine Anwendung über mein Testprog. gestartet, kann sie ebenfalls über die SOAP-Anwendung gestartet werden. Es wird aber eine eigene Instanz erzeugt.

      Irgend eine Idee

      Comment


      • #4
        Weitere Erkenntnisse:

        Ich habe in meiner DCOM-Anwendung das Interface, welches ich in der SOAP-Anwendung benötige, mit "RegisterActiveObject()" in die ROT eingetragen. Mit einem Testprog kann ich über GetActiveObject() das Interface finden und verwenden.
        In meiner SOAP-Anwendung findet GetActiveObject() mein Interface in der ROT nicht.
        Aufgrund dieser Erkenntnisse vermute ich ein Problem in meiner SOAP-Anwendung, bzw. deren Konfiguration. Hierfür habe ich im IIS ein virtuelles Verzeichnis angelegt. Die Verzeichnissicherheit steht auf "Niedrig(IIS-Prozess)". An der SOAP-DLL habe ich im Eigenschaftsdialog unter Dateisicherheit beim Anonymen Zugriff meinen Benutzer mit dem passenden Passwort eingetragen

        Comment


        • #5
          Mittlerweile habe ich eine neue SOAP-Anwendung geschrieben, die nur versucht, eine DCOM-Verbindung zu meiner DCOM-Applikation herzustellen. Ich erhalte immer noch die gleichen Ergbebnisse (DCOM-Anwendung kann gestartet werden, ist aber nicht sichtbar, oder läuft die DCOM-Anwendung bereits, dann : "Schwerwiegender Fehler").
          Andere selbstentwickelte DCOM-Anwendungen lassen sich ohne Probleme verwenden, nur meine Anwendung, die ich hierfür benötige nicht (ist ja immer so!). In meiner DCOM-Anwendung stecken 10 verschiedene Schnittstellen mit Events drin, in den anderen nur jeweils eine.
          Mir ist auch aufgefallen, dass sich meine Anwendung nicht wie anderne Anwendungen in den Komponentendiensten in der DCOM-Konfigurationsseite zeigt. Das machen aber die anderen Anwendungen, die funktionieren. Wenn ich per Hand einen Schlüssel unter HKEY_CLASSES_ROOT\AppID\{GUID meiner Schnittstelle} anlege, dann kann ich sie auch auf der DCOM-Konfigurationsseite sehen, aber die Option "Anwendung auf diesem Computer ausführen" ist abgewählt und grau hinterlegt.

          Vielleicht liegt hier ja da Problem

          Comment


          • #6
            Mittlerweile habe ich das Problem schon vereinfacht. Nach dem "Aufräumen" der Registry sieht es schon etwas besser aus, der "Schwerwiegende Fehler" ist weg.

            Ich kann jetzt über die SOAP-Anwendung meine DCOM-Anwendung starten, egal ob sie bereits läuft oder nicht. Allerdings ist die Anwendung immer noch nicht sichtbar, wenn sie durch die SOAP-Anwendung gestartet wird. Ausserdem erzeugt ein Start durch sie SOAP-Anwendung immer eine neue Instanz meiner DCOM-Anwendung, auch wenn diese bereits läuft

            Comment


            • #7
              ich habe ein ähnliches Problem, jedoch im absoluten Anfangsstadium.
              Eine DCOM Komponente, welche in Delphi6 geschrieben ist, soll über einen .NET Webservice angesprochen werden. Ich habe nichtmal im Ansatz eine Ahnung wie ich überhaupt das DCOM Objekt ansprechen soll ... Ich finde auch überhaupt keine gescheiten Beispiele und das obwohl ich nun schon echt lange google
              Kann mir möglicherweise hier irgendwer mal so einen Grundsätzlichen Aufbau eines Connectionaufbaus mit Funktionsaufruf eines DCOM Objekts über .NET erklären. Ich wäre wirklich extrem dankbar dafür, da ich echt keine Ahnung mehr habe wo ich sonst noch gucken könnte. Vielen Dank schon einmal im Vorraus!

              Comment

              Working...
              X