none
32-Bit-DLL ausführen auf 64-Bit-Windows Server 2008 RRS feed

  • Frage

  • Hallo,

    auf Windows Server 2008 64 Bit mit IIS 7.0 habe ich eine ASPX-Anwendung
    installiert, die auch noch VB6-DLLs (32 Bit) verwendet. Die DLLs wurden
    ebenfalls installiert und sind zu finden unter c:\windows\syswow64.

    Die ASPX-Anwendung kann im Browser geöffnet werden, bei Zugriff auf eine DLL
    gibt es dann jedoch eine Fehlermeldung:
    COM-Klassenfactory für die Komponente ... konnte nicht abgerufen werden.

    Habe dann imIIS im Anwendungspool die Einstellung "32-Bit-Anwendungen
    aktivieren" auf True gesetzt. Im Anschluss kann die Website jedoch überhaupt
    nicht mehr angezeigt werden. Es erscheint die Meldung:

    HTTP-Fehler 500.19 Internal Server Error
    Auf die angeforderte Seite kann nicht zugegriffen werden, da die zugehörigen
    Konfigurationsdateien für die Seite ungültig sind.
    Modul: DynamicCompressionModule
    usw.

    Wer kann helfen? Muss evtl. noch unter Windows Server 2008 etwas aktiviert
    werden, damit 32Bit möglich ist???

    Gruß Dieter
     
    Samstag, 29. Mai 2010 08:17

Antworten

  • Hallo Dieter,

    HTTP-Fehler 500.19 Internal Server Error
    Auf die angeforderte Seite kann nicht zugegriffen werden, da die zugehörigen
    Konfigurationsdateien für die Seite ungültig sind.
    Modul: DynamicCompressionModule
    usw.

    siehe: http://forums.iis.net/t/1149768.aspx

    Ich selbst hatte den Fehler so aber noch nie. Hast Du die VB6-DLLs auch korrekt registriert?

    Siehe dazu: http://support.microsoft.com/kb/282747

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    • Als Antwort markiert Dieter R. _ Freitag, 11. Juni 2010 13:47
    Montag, 31. Mai 2010 06:28
    Moderator
  • Hallo,

    habe folgende weitere Versuche unternommen:

    1. Versuch -> ohne Erfolg

    DCOMCNFG ausgeführt und unter Komponentendienste -> Computer -> Arbeitsplatz -> Register COM-Sicherheit den NETZWERKDIENST aufenommen mit allen 4 Rechten. AppPool-Identität auf NEWORK SERVICE gesetzt. Ohne Erfolg: weiterhin Fehlermeldung (s.o.) bei Zugriff auf 32-Bit-DLL.

    2. Versuch -> erfolgreich

    Habe im AppPool die Identität auf SYSTEM gesetzt. Endlich, der Zugriff auf 32-Bit-DLL geht jetzt!

    Hoffe, dass auch der Remotezugriff von anderer Maschine funktioniert (noch nicht getestet).

    Bemerkung:

    Beim Kundenrechner handelt es sich um einen SmallBusinessServer und ich habe festgestellt, dass sowohl IIS7 als auch IIS6 installiert sind (komisch). Meine Anwendung ist unter IIS7 installiert.

    Gruß Dieter

    • Als Antwort markiert Dieter R. _ Freitag, 11. Juni 2010 13:48
    Freitag, 11. Juni 2010 13:45

Alle Antworten

  • Hallo Dieter,

    HTTP-Fehler 500.19 Internal Server Error
    Auf die angeforderte Seite kann nicht zugegriffen werden, da die zugehörigen
    Konfigurationsdateien für die Seite ungültig sind.
    Modul: DynamicCompressionModule
    usw.

    siehe: http://forums.iis.net/t/1149768.aspx

    Ich selbst hatte den Fehler so aber noch nie. Hast Du die VB6-DLLs auch korrekt registriert?

    Siehe dazu: http://support.microsoft.com/kb/282747

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    • Als Antwort markiert Dieter R. _ Freitag, 11. Juni 2010 13:47
    Montag, 31. Mai 2010 06:28
    Moderator
  • Hallo Dieter

    konnte dir Stefans Beitrag weiterhelfen?

    Gruß
    Andrei

    Donnerstag, 3. Juni 2010 09:09
    Moderator
  • Hallo,

    danke für den Tipp zunächst. Es handelt sich um eine Maschine beim Kunden und ich hatte diese Woche keine Möglichkeit zum Testen. Werde hier aber nochmals eine Nachricht hinterlassen, sobald ich getestet habe.

    Gruß Dieter

    Samstag, 5. Juni 2010 09:12
  • Hallo Stefan,

    nach Abschalten der httpCompression über Kommandozeile - wie unter 1149768.aspx beschrieben - tritt der HTTP-Fehler nicht mehr auf. Die Anwendung wird normal gestartet (1. Problem gelöst).

    Sobald auf meine 32-Bit-DLL zugegriffen werden soll, erhalte ich jetzt aber die Meldung:

    Die COM-Klassenfactory für die Komponente mit CLSID ... konnte aufgrund des folgenden Fehlers nicht abgerufen werden: 80070005

    Ich habe einen eigenen Anwendungspool erstellt und dort 32-Bit = true gesetzt. Außerdem habe ich zusätzlich die DLL manuell registriert über:

    cd \windows\syswow64

    regsvr32 IDRLagLib.dll -> OK-Meldung erscheint

    Ist das ein Berechtigungsproblem?

    Gruß Dieter

     

     

    Mittwoch, 9. Juni 2010 09:37
  • Hallo Dieter,
    nach Abschalten der httpCompression über Kommandozeile - wie unter 1149768.aspx beschrieben - tritt der HTTP-Fehler nicht mehr auf. Die Anwendung wird normal gestartet (1. Problem gelöst).
    na das freut mich doch :)

    Sobald auf meine 32-Bit-DLL zugegriffen werden soll, erhalte ich jetzt aber die Meldung:

    Die COM-Klassenfactory für die Komponente mit CLSID ... konnte aufgrund des folgenden Fehlers nicht abgerufen werden: 80070005

    Ich habe einen eigenen Anwendungspool erstellt und dort 32-Bit = true gesetzt. Außerdem habe ich zusätzlich die DLL manuell registriert über:

    cd \windows\syswow64

    regsvr32 IDRLagLib.dll -> OK-Meldung erscheint

    Ist das ein Berechtigungsproblem?

    Schau mal hier http://social.msdn.microsoft.com/Forums/en/clr/thread/03a2822a-d51a-437b-abff-ba6132edf4b4 (letzter Eintrag). Wichtig ist, dass Du den richtigen Account erwischst. Im Normalfall NETZWERKDIENST bzw. NETWORK SERVICE, je nach Einstellung kann es aber auch die IIS_IUSRS Gruppe oder ein anderer Account sein (das kommt u.a. drauf an, wie deine Anwendung und ggfs. IIS eingestellt ist, bspw. Impersonisierung, ...)

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    Mittwoch, 9. Juni 2010 09:54
    Moderator
  • Hallo Stefan,

    bevor ich auf dem Kundenrechner suche, möchte ich mir das auf meiner virtuellen Maschine ansehen. Kenne mich leider mit dem Win 2008 Server und Benutzerverwaltung nicht aus. Bei mir finde ich keinen Account "Netzwerkdienst". Muss ich da zuerst die ActiveDirectory-Domänendienste installieren?

    Gruß Dieter

    Mittwoch, 9. Juni 2010 10:29
  • Hallo Dieter,

    bevor ich auf dem Kundenrechner suche, möchte ich mir das auf meiner virtuellen Maschine ansehen. Kenne mich leider mit dem Win 2008 Server und Benutzerverwaltung nicht aus. Bei mir finde ich keinen Account "Netzwerkdienst". Muss ich da zuerst die ActiveDirectory-Domänendienste installieren?

    Mit AD hat der Accounts nichts zu tun, der steht aber auch nicht in der Benutzerverwaltung drin, falls Du das meinst. Wenn Du bspw. mal auf ein Testverzeichnis im Windows Explorer gehst, dort die Sicherheitseinstellungen änderst und die Benutzerliste anzeigen lässt, sollte der Account dort drins stehen. Ähnlich ist es bei DCOMCNFG auch.

    Wann genau der Account eingerichtet wird, kann ich dir so gar nicht sagen, wenn er nicht von Haus aus dabei ist, wird er spät. mit IIS eingerichtet. (Da sämtliche W2K8 Systeme, die ich hier aktuell im Zugriff habe, IIS drauf haben, kann ich nicht sehen, ob der Account evtl. auch schon vor IIS vorhanden ist :)

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    Mittwoch, 9. Juni 2010 10:37
    Moderator
  • Hallo Stefan,

    musste zuerst noch die Benutzerkontensteuerung ausschalten, damit im Win. Explorer in den Sicherheitseinstellungen der Button "Hinzufügen" aktiviert ist. Habe dann (auf meiner virtuellen Maschine) den NETZWERKDIENST hinzugefügt. Der Dialog kann jedoch nicht mit OK verlassen werden, es erscheint die Fehlermeldung:

    Die Berechtigungsinformationen für dcomcnfg.exe wurden nicht gespeichert. Zugriff verweigert.

    Das obwohl ich als Administrator angemeldet bin.

    Außerdem noch die Frage: dcomcnfg.exe gibt es unter SysWOW64 und unter System32. Ich nehme an, die Berechtigungen sollen unter SysWOW64 gesetzt werden???

    Gruß Dieter

    Mittwoch, 9. Juni 2010 17:55
  • Hallo Stefan,

    habe da wohl was falsch verstanden. Ist es so richtig:

    ich muss nicht im Windows Explorer die Berechtigung für den NETZWERKDIENST setzen, sondern die Anwendung dcomcnfg ausführen mit "Start - Ausführen" ?

    Es erscheint dann die Management-Console, nur wo finde ich meine Anwendung:

    Komponentendienste -> Computer -> Arbeitsplatz -> DCOM-Konfiguration -> welcher Unterpunkt??? (meine DLL ist nicht zu sehen)

    Gruß Dieter

    Donnerstag, 10. Juni 2010 20:21
  • Hallo,

    habe folgende weitere Versuche unternommen:

    1. Versuch -> ohne Erfolg

    DCOMCNFG ausgeführt und unter Komponentendienste -> Computer -> Arbeitsplatz -> Register COM-Sicherheit den NETZWERKDIENST aufenommen mit allen 4 Rechten. AppPool-Identität auf NEWORK SERVICE gesetzt. Ohne Erfolg: weiterhin Fehlermeldung (s.o.) bei Zugriff auf 32-Bit-DLL.

    2. Versuch -> erfolgreich

    Habe im AppPool die Identität auf SYSTEM gesetzt. Endlich, der Zugriff auf 32-Bit-DLL geht jetzt!

    Hoffe, dass auch der Remotezugriff von anderer Maschine funktioniert (noch nicht getestet).

    Bemerkung:

    Beim Kundenrechner handelt es sich um einen SmallBusinessServer und ich habe festgestellt, dass sowohl IIS7 als auch IIS6 installiert sind (komisch). Meine Anwendung ist unter IIS7 installiert.

    Gruß Dieter

    • Als Antwort markiert Dieter R. _ Freitag, 11. Juni 2010 13:48
    Freitag, 11. Juni 2010 13:45
  • Hallo Dieter,

    sorry, dass ich nicht so zeitig antworten konnte.

     

    Habe im AppPool die Identität auf SYSTEM gesetzt.

    hast Du nicht ernsthaft, oder?

    Ich kann ja verstehen, dass man dann irgendwann den Weg des geringsten Widerstands geht aber diese Einstellung ist absolut nicht zu empfehlen !

    Die Anwendung (und damit auch ein potienteller Angreifer) hat damit Zugriff auf so ziemlich alles, auch Sachen, an die man besser nicht rankommen sollte (bspw. Benutzeraccounts, Systemdaten, ...)

    Bzgl. den Berechtigungsproblemen solltest Du das mal wieder auf Network Service zurücksetzen und bspw. mit ProcessMonitor schauen, wo genau es eigentlich hakt.

    BTW: IIS 6 kann nicht neben IIS 7 installiert sein. Wenn es ein SBS 2008 ist, ist IIS 7 installiert und zusätzlich noch eine IIS 6 Verwaltungskonsole (wahrscheinlich für FTP oder ähnliches). IIS 6 selbst ist das aber nicht.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    Freitag, 11. Juni 2010 14:28
    Moderator
  • Hallo Dieter,

     

    Habe im AppPool die Identität auf SYSTEM gesetzt. Endlich, der Zugriff auf 32-Bit-DLL geht jetzt!

    das hast Du jetzt nicht wirklich gemacht, oder? Falls doch, würde ich dringend dazu raten, das wieder rückgängig zu machen. Damit hat die Anwendung (und somit auch ein potienteller Angreifer) vollen Zugriff auf so ziemlich alles, was auf dem System vorhanden ist (inkl. Benutzeraccounts, Systemrelevante Anwendungen, Dienststeuerung, usw.).

    Stell es wieder auf Network Service und schau mal mit dem ProcessMonitor , wo genau es eigentlich hakt.

    Beim Kundenrechner handelt es sich um einen SmallBusinessServer und ich habe festgestellt, dass sowohl IIS7 als auch IIS6 installiert sind (komisch). Meine Anwendung ist unter IIS7 installiert.

    IIS 7 kann nicht neben IIS 6 installiert werden. Wenn es ein SBS 2008 ist, ist IIS 7 installiert, ggfs. mit einer zusätzlichen IIS 6 Management Konsole (bspw. für FTP oder ähnliches), IIS selbst ist dann aber nur in v7 vorhanden.

    BTW: Ich habe dieses Posting vor ein paar Stunden schon mal gesendet, irgendwie scheint das aber nicht angekommen zu sein.

    Nachtrag: Ok, ok, ich war zu ungedulfig. Ich konnte ja auch nicht ahnen, dass man mehr als 5 Stunden warten muss, bis manche Postings erscheinen??????)

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    Freitag, 11. Juni 2010 19:52
    Moderator
  • Hallo Stefan,

    danke für den Hinweis. Vielleicht ist das Ganze hier nicht so kritisch, da es sich um keinen öffentlichen Webserver handelt, sondern eine Webanwendung, die nur lokal im Firmennetz läuft. Ich werde trotzdem nochmals schauen, ob ich es mit dem NETZWERKDIENST hinbekomme. Die Voreinstellung der Identität (Anwendungspool) war übrigens ApplicationPoolIdentity.

    PS: wundere dich bitte nicht, wenn manchmal ein paar Tage vergehen, bis ich auf deine Postings reagiere. Aber ich muss immer wieder Termine mit dem Kunden abstimmen, bis ich auf den Server kann (im Moment Testphase). Aber ich bin natürlich für jeden Tipp dankbar!!!

    Gruß Dieter

     

    Dienstag, 15. Juni 2010 07:49