Wie kann ich Debuggen, VB6, IIS-Anwendung auf Windows 7 64-bit
Ich habe müssen in der Lage sein, zum Debuggen eines Visual-Basic-6-IIS-Anwendung auf Windows 7 64-bit. Nicht nur für ein einzelnes problem, sondern für die Fortsetzung der Entwicklung.
Einen Versuch zu Debuggen, die Ergebnisse in eine Fehlermeldung "Ein unbekannter Fehler ist aufgetreten" aus dem WebClass-Laufzeit.
Wenn ich nicht Debuggen und einfach Zugriff auf die kompilierte webclass-die Seite lädt einfach nur gut. Also, ich glaube nicht, dass es etwas falsch mit der Registrierung /Konfiguration der Anwendung, sondern das irgendwie mit Windows OS security blockiert die VB6-IDE aus dem Einhängen in IIS und ermöglicht es zu Debuggen.
Hier sind all die Dinge, die ich versucht habe:
- Deaktiviert die Benutzerkontensteuerung (UAC) und neu gestartet.
- Geändert DCOM-Komponente Sicherheit für den Maschinen-debug-manager (MDM) und zugewiesen "Jeder" Start-und Aktivierungsberechtigungen.
- Manuell Hinzugefügt DCOM-Eintrag für "70F214BA-94E2-4bdf-8F30-32CB4A905E4D", die die VB6-IDE-und zugewiesen "Jeder" Start-und Aktivierungsberechtigungen.
- Deaktiviert Die Windows-Firewall
- Lief die Anwendung (VB6.exe) im Kompatibilitätsmodus von Windows XP SP3 mit der option als administrator ausführen.
- Erstellt eine neue IIS-Anwendungspool mit einer Identität, die zu einem administrator-Konto. Setzen Sie die Anwendung, pipeline-Modus bis zu klassischer und aktiviert 32-bit legacy-Anwendungen unterstützen.
Diese erschöpft, meine umfassende Erfahrung von Dingen zu versuchen. Wenn ich eine VB6-Anwendung Windows-Anwendung oder eine ActiveX-Steuerung kann ich problemlos starten und Debuggen.
Ich erlebt habe ein sehr ähnliches problem unter Windows Server 2003 zwar eine frische Installation von W2K3 das problem behoben.
In der Windows-Ereignisanzeige gibt es 2 doppelte Einträge für Ereignis-ID 10004 Sie wie folgt vor:
DCOM ist der Fehler "1326" und war nicht in der Lage, um die Anmeldung DOMÄNE\Benutzer ein, um den server zu starten:
{70F214BA-94E2-4BDF-8F30-32CB4A905E4D}
DOMAIN\Benutzer meiner Domäne Konto und die GUID oben erwähnt, wird die DCOM-Eintrag habe ich Hinzugefügt, für VB ASP-Debuggen.
Die einzige zusätzliche information, die ich zu bieten haben ist, dass Windows 7 64-bit läuft in einer VM-ich bin zwar Remote auf die Konsole, während Sie versuchen zu Debuggen. Ich habe Probleme bei der Fehlersuche an VMs ohne Anschluss der Konsole.
Wenn jemand irgendwelche weiteren Vorschläge der Dinge zu versuchen, ich würde es sehr zu schätzen.
Wenn jemand dies herauszufinden und erfolgreich zu Debuggen eines IIS-web-Anwendung auf einem Windows 7 OS mit Darstellung der nötigen Einstellungen, biete ich das aktuelle Kopfgeld von 300 Punkte!
- Hi Warren, ich sehe, Sie setzen ein Kopfgeld auf Sie diese wieder ein. Eine Sache, die ich bemerkt -- Sie nicht schweigen von dem, was SP VS6, die Sie verwenden. Ich weiß, es ist zu einfach, aber sind Sie mit SP6?
- Ja. Service Pack 6.
- Warren: ein weiteres Stück info: kann ich eine Ausführen -> Starten ohne W3SVC oder IISAdmin-Dienste auch gestartet. Das impliziert, dass das Problem etwas damit zu tun, VB6, im Gegensatz zu OS blockiert die Kommunikation mit IIS.
- Haben Sie versucht mit Ihrer app mit IIS Express? So können Sie IIS in Ihrem eigenen Benutzer-Kontext (der gleiche Kontext, in dem der VB6-IDE/debugger laufen würde)?
- Ein letzter verzweifelter Versuch: Es scheint, Sie können Holen Sie ein unbekannter Fehler, wenn Ihre Anwendung event log voll ist, und gesetzt, um zu überschreiben Ereignisse. Versuchen Sie es deaktivieren, und sehen, ob das einen Unterschied macht.
- Ja, es gibt Fehler in das Ereignisprotokoll. Ich habe aktualisiert die ursprüngliche Frage. Jedoch, während einer meiner ersten Fehlersuche versuche war, wenn ich fügte hinzu, die DCOM-Eintrag, um zu versuchen und zu lösen, was offenbar ein Sicherheits-problem mit dem starten der VB-debugger. Die Informationen können noch helfen?
- Die GUID aus error-Ereignis ist der eine für VB6.exe (IDE), aber "...keine Anmeldung..." Fehler-Ereignis-in der Regel bedeutet, dass entweder Benutzername oder Passwort falsch ist. Ich verstehe nicht ganz, Woher es kommt in diesem Szenario, obwohl. Falsches Kennwort müssen eingegeben worden und gespeichert für DOMAIN\User irgendwo (vorausgesetzt, können Sie sich erfolgreich angemeldet haben, interaktiv mit diesen Anmeldeinformationen zu Ihrem VM). Was haben Sie auf der Registerkarte Identität in der DCOM-Konfiguration für dieses "VB-ASP-Debuggen" - Komponente?
- Ja das habe ich. Dieses problem ist leicht reproduzierbar auf einem Windows 7-64-bit-Rechner mit Visual Studio 6 SP6, ob der Computer zu einer Domäne oder einem einfachen standalone-PC. Ich habe versucht mit einem lokalen admin-Konto und ich habe versucht, "Alle" werden alle COM-Sicherheit Berechtigungen.
- Fehler sehen Sie im system-Ereignisse nicht über die Berechtigungen, so ist es nicht behoben durch änderungen, die Sie beschreiben.
- Die Fehlermeldung ändert sich die Anzeige der verschiedenen user-Namen. Ich bin mir nicht sicher, ob das hilft, aber wenn ich entfernen Sie die DCOM-Eintrag, den hatte ich manuell Hinzugefügt für "VB-ASP-Debuggen", dann gibt es keine Ereignismeldungen protokolliert. Der einzige Fehler ist das "Ein Unbekannter Fehler ist aufgetreten" aus der VB-Laufzeit angezeigt, in der IDE.
- Ich Schätze die Mühe, die Sie nahm, um das problem reproduzieren! Es ist einfach zu replizieren, würde aber sicherlich haben sich die Zeit genommen, um das setup. Die primäre Maschine, in die ich tun möchte, die Entwicklung ist Win7 64-bit und ich wirklich wollen, um zu vermeiden, dass eine VM. Wenn Sie einen Weg finden können, möglich, die entweder über die IIS express oder alles, was es möglich macht, zu Debuggen, die auf der 64-bit-OS haben Sie meine Frage beantwortet erfolgreich. Woher wissen Sie, dass es nicht eine Frage der Sicherheit, sondern IIS? Ich konnte keine Spur, warum der Fehler so bin ich davon ausgegangen, Sicherheit.
- Ilja, wenn Sie könnte, veröffentlichen Sie Ihre Ergebnisse als eine Antwort auf die Frage würde ich mich am besten, dass Sie erhalten die Prämie für Ihre Bemühungen, zumindest erkennen es ist nicht eine Frage der Sicherheit. Dies ist zumindest ein Schritt nach vorne.
- Microsoft Artikel - support.microsoft.com/kb/259725
- Danke aber das löst nicht das problem. Ich habe darüber bekannt, das problem seit den Tagen von Windows Server 2003 und es funktioniert in diesem Szenario. Aber ich bin speziell reden über Windows 7 hier.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich glaube, es ist nicht möglich zu Debuggen, VB6
IIS Application
im IDE-auf jeder beliebigen version von Windows, die neuer als Windows XP (wahrscheinlich, die situation ist ähnlich für die server-Variante von Windows). Die Ursache des Problems scheint zu sein, große Unterschiede zwischen IIS 6 und IIS 7+. Natürlich, es gibt keine offizielle Dokumentation zu dem Thema, so werde ich in mehr details unten.Ersten, macht es Sinn, verschließen Sie das problem. Viele Leute scheinen zu vergessen, dass
IIS Application
ist eine exakte Begriff, der sich auf Besondere Art von VB6 Projekt in diesem Zusammenhang. Ich war in der Lage, den Fehler zu reproduzieren Sie die folgenden Schritte auf Win7 Ultimate x64 SP1, Win7 Ultimate x86 SP1 und Vista Enterprise x86 SP2:IIS Application
Projekt:Sofort nach, dass es Fehlermeldung in VB6 IDE:
Lassen Sie uns untersuchen, was passiert, wenn das gleiche Szenario wird ausgeführt auf Windows XP. Wenn man beginnt, debugging VB6
IIS Application
:Alle diese vorkommen auf Windows XP vor
WebClass
aktiviert ist. Prozess nicht zu diesem Zeitpunkt auf Windows 7.Es ist klar, dass die VB6-IDE-versuche durchführen von Verwaltungsaufgaben in IIS, um in der Lage sein, zu Debuggen
WebClass
. Man kann sich ein bisschen tiefer mit Hilfe von Process Monitor und API Monitor. Es ist klar, dass VB6.exe beruht auf COM-Schnittstellen des IIS-Admin-Dienst. Schlechte Nachricht ist, dass IIS 7+, im Gegensatz zu früheren Versionen, nicht verwenden Sie Metabase und es gibt keine IIS-Admin-Dienst in IIS 7+. Kann man installierenIIS Metabase and IIS6 compatibility
Komponente, die in der Theorie, sollte es Anwendungen ermöglichen, die verwenden Sie Metabase weiter zu arbeiten mit IIS 7+:Leider die Installation nicht das problem zu beheben.
Es gibt Vorschläge, dass Ihr problem kann verursacht werden durch eine Unzureichende Start-und Aktivierungsberechtigungen für COM-Komponenten. Ich fürchte, dass all diese Vorschläge sind sinnlos. Fehler dieser Art sind immer begleitet von zugehörigen Fehler-Ereignisse im Ereignisprotokoll des Systems. Es gibt keine solchen Ereignisse in diesem Fall.
Ich vor kurzem das gleiche problem auf meinem Windows 7 64 bit-Maschine. Die Lösung, die für mich gearbeitet wurde, um zu überprüfen das windows-Ereignisprotokoll (system) für die spezifischen DCOM-Fehler. Dies ist der Fehler, den ich hatte:
Der entscheidende Punkt für mich war das IUSR-built-in-Konto Start und Aktivierung der Berechtigung. Nach attemtpting zu geben, dieser Benutzer die Berechtigung für die einzelnen DCOM-Komponenten und Versagen, beschloss ich, fügen Sie den Benutzer der standardmäßigen DCOM-Berechtigungen für die Maschine. Sie können dies tun, wie folgt:
Führen Sie dcomcnfg. Der rechten Maustaste auf Konsolenstamm/Komponentendienste/Computer/Arbeitsplatz-Knotens. Wählen Sie Die Option Eigenschaften. Wählen Sie die "COM-Sicherheit". Klicken Sie auf die "Standard Bearbeiten" unter 'Zugriffsrechte' - Gruppe. Klicken Sie Auf "Hinzufügen". Geben Sie die Benutzer angezeigt, die in Ihrem Ereignisprotokoll (bei mir war das IUSR). Klicken Sie auf OK. Wiederholen Sie für die "Start-und Aktivierungsberechtigungen" - Gruppe. Wählen Sie OK auf alle Dialoge.
Habe nicht ich mein Rechner neu starten um diese Einstellungen wirksam werden. Ich benutzte die gleiche Methode, die zum Debuggen der VB6-dll, die ich unter XP, d.h. führen Sie die dll unter VB6 (unbeaufsichtigte Ausführung), einen breakpunkt setzen, navigieren Sie zu einer Seite, die Zugriff auf die dll, und warten Sie, bis der breakpoint getroffen werden. Hoffe, das hilft.
IIS Application
im Gegensatz zu reinen VB6-Komponente von ASP-Anwendung?IIS Application
ist eine spezielle Art von VB6 Projekt.Weiß nicht, ob das hilft Euch weiter.. ich bin forscht das gleiche Problem meine eigenen verwenden.
Selbst viewer sehe ich:
Die Maschine-Standard-Berechtigungseinstellungen gewähren keine Berechtigung zur Lokalen Aktivierung für die COM-Serveranwendung mit
und
für Benutzer NT-AUTORITÄT\IUSR-SID (S-1-5-17) von der Adresse LocalHost (Mit LRPC). Diese Sicherheitsberechtigung kann verändert werden mit Hilfe der Component Services administrative tool.
..also ich Versuch zu gewähren, Lokale Aktivierung "Jedermann" - Nur um zu sehen, wenn ich machen kann dass es Weg geht. -Ich Kann nicht.
Dann gebe ich die Lokale Aktivierung als Standard-in Komponentendienste /Computer (Eigenschaften) COM Sicherheits -, Start-und Aktivierungsberechtigungen
Ich kann immer noch nicht Debuggen, aber ich bekomme nicht mehr Fehler in der Ereignisanzeige. Im browser bekomme ich
Den Aufruf
Server.CreateObject
Fehler beim überprüfen der Berechtigungen. Der Zugriff auf dieses Objekt wurde verweigert.CLSID oben ist meine vb6-Anwendung, aber registry-Punkte zu vb6debug.dll (die gut aussieht). progID-match etc.
Berechtigungen für alle auf der vb6debug.dll und anderen Dateien.
Nächste Schritt ist procmon oder ähnliches zu sehen, was passiert.
IIS Application
im Gegensatz zu reinen VB6-Komponente von ASP-Anwendung?IIS Application
ist eine spezielle Art von VB6 Projekt.Haben Sie als das schreiben einer log-Datei? Es ist ziemlich geradlinig und Sie können beginnen, genau dort, wo der code ist wahrscheinlich auf einen Fehler verursachen. Ich schlage vor, Sie eine Funktion erstellen, dass dauert nur wenige Parameter, wie eine Sub/Funktion name, ein Err-Objekt und ein optionales extra string, so können Sie weitere Informationen wie, was Schritt deinen code in war. In deinem error-handler die Funktion aufrufen, indem Sie Ihre Parameter.
Mann, kann ich Mitfühlen. Ich verbrachte fast 3-Mann-Tage auf diese, und nicht noch eine Lösung, ich bin unglaublich glücklich mit, aber es funktioniert, also habe ich "aufgegeben" Suche nach der richtigen Lösung, und ging mit diesem, weil ich einfach nicht verschwenden mehr Ressource Zeit.
Unter IIS-Manager, klicken Sie auf virtuelles Verzeichnis -> Authentifizierung
- deaktivieren Sie die anonyme Authentifizierung
- aktivieren Sie die Standardauthentifizierung
Navigieren Sie zu der app, geben Sie domain-oder workstation-Anmeldeinformationen mit ausreichend Berechtigungen, um die app an die Arbeit basiert auf dem, was für die Dateisystem-Sicherheit, wo die app lebt.
Dies bedeutet effektiv, dass ich mich authentifizieren um die virtdir jedes mal, wenn ich debugging starten zum ersten mal, aber es ist ein kleiner Preis zu zahlen, schließlich haben Sie das debugging wieder funktionsfähig.
IIS Application
im Gegensatz zu reinen VB6-Komponente von ASP-Anwendung?IIS Application
ist eine spezielle Art von VB6 Projekt.Könnte Sie kopieren die Informationen, die geschickt in die VB6-Teil der Anwendung und testen Sie, dass von der Konsole aus?
Ich meine, das ist grob, aber wir sprechen über das Debuggen von einem hybrid-IIS VB6-Anwendung.
Ich denke, man kann ziemlich sicher sein, es ist nicht ein Problem, dass Microsoft nicht wollen, dass es funktioniert, sondern einfach, dass es nicht funktionieren kann. Kennen Sie dieses Dokument?: http://msdn.microsoft.com/en-us/vstudio/ms788708.aspx
Heißt es:
Habe ich versucht, so gut und nicht so entschieden, führen Sie eine 32-bit-OS in einer VM und dann funktioniert es einwandfrei. Ich denke, es ist durch, wie die debugger-hooks in den kernel, um in der Lage sein, um den debugger auszuführen.
Ich hatte dieses problem heute, September 14, 2012 und konnte es lösen, in dem auf einfachste Weise möglich, ich habe debug-dlls, die ich brauche visual basic 6.0 mit XP hatte ich kein problem, aber ich habe es auf windows 7 und dort war das problem mit iis7, ich lese in vielen Foren und blogs, aber nichts was ich war, auch ich habe dieses blog, noch, am Ende habe ich behoben, das problem wie folgt: Komponenten-Dienste-> Computer-> Rechtsklick Auf Eigenschaften-> dann klicken Sie auf die Registerkarte "Sicherheit" COM-> Abschnitt Start-und Aktivierungsberechtigungen-> Standard Bearbeiten -> und dann fügen Sie das Konto "Lokaler Dienst" und gab alle Berechtigungen. Ich kläre, bei mir funktionierte es zum Debuggen der dll in visual basic 6.0 lokal, aber nicht, ob es gut ist oder ist die einzige Lösung, denke ich, habe ich auch dies getan werden sollte, über das, was Sie sagen, auf die anderen Foren , ist jetzt auch auf Microsoft http://support.microsoft.com/kb/899965/es Seite sagt das gleiche, sagte aber, dass das hinzufügen der NETWORK SERVICE account, wie ich es Tat und ich habe für den Fehler, dass ich das Gebot der Ereignisanzeige ist:
"Festlegen von Berechtigungen festlegen, die standardmäßig auf Ihrem computer werden nicht gewährt Lokale Aktivierung Berechtigung für die COM-Serveranwendung mit CLSID {95D14525-F934-4D4F-9B33-2CE753FAF3B0} und APPID {95D14525-F934-4D4F-9B33-2CE753FAF3B0} Benutzer NT-AUTORITÄT \ LOKALER DIENST mit der SID (S-1-5-19) in der Adresse LocalHost (mit LRPC).
Diese Sicherheitsberechtigung kann verändert werden mit Hilfe der Component Services administrative tool "
Sehen Sie, sagt NT \ AUTORITÄT \ Netzwerkdienst, LOKALER DIENST-Kontos Knochen.
Gut, dass ist alles.
IIS Application
im Gegensatz zu reinen VB6-Komponente von ASP-Anwendung?IIS Application
ist eine spezielle Art von VB6 Projekt.Klingt es wie Sie wollen, dass die VB6-IDE zum Brand in den debugger, wenn die app-Instanz erstellt wird, und das ist zu Versagen. Haben Sie versucht, starten Sie die VB6-IDE im debug-Modus zu hosten Ihre COM-Komponente, setzen Sie einen breakpoint in deiner Quelle, und dann sehen, ob der Zugriff auf die Seite, die die Komponente verwendet, die dann die Ursache für den breakpoint im debugger, geschlagen zu werden? Das ist, nehmen Sie die Aktivierung der VB6-IDE aus der Schleife - es läuft, sollte nur die Ursache, die die CLSID für die app zu zeigen, um die Laufzeit-Instanz der IDE das COM-host.
Schon eine lange Zeit, da habe ich dev in VB6, so dass einige details unklar, doch ich erinnere mich, Debuggen von COM Servern nahm etwas gymnastik, und unter eine der Lösungen war, läuft eine separate Instanz von VB als COM out-of-process-server-host.