BUG: Fehlermeldung "Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt" bei dem Versuch, auf Daten auf einer ASP.NET-Seite zuzugreifen, die ADO Interop verwenden

Artikel-ID: 810098 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Dieser Artikel ist eine Übersetzung des folgenden englischsprachigen Artikels der Microsoft Knowledge Base:
810098 BUG: An "Object reference not set to an instance of an object" error occurs when you try to access data by using ADO Interop on an ASP.NET page
Achtung: ADO und ADO MD sind noch nicht umfassend in der Umgebung des Microsoft .NET Framework getestet worden. Dies kann zu zeitweise auftretenden Problemen führen. Insbesondere in Anwendungen auf Dienstbasis und in Multithreading-Anwendungen. Die in diesem Artikel erörterten Techniken sollten nur als vorübergehende Maßnahmen während der Migration zu ADO.NET angewendet werden. Sie sollten diese Techniken nur anwenden, nachdem Sie umfassende Tests durchgeführt haben, um sicherzustellen, dass es keine Kompatibilitätsprobleme gibt. Für etwaige Probleme, die durch die Verwendung von ADO oder ADO MD in dieser Weise verursacht werden, gewährt Microsoft keine Unterstützung. Weitere Informationen finden Sie im folgenden Artikel der Microsoft Knowledge Base:
840667 Wenn Sie in einer Framework-Anwendung ADO und ADO MD verwenden, empfangen Sie unerwartete Fehler
Bitte beachten Sie: Bei diesem Artikel handelt es sich um eine Übersetzung aus dem Englischen. Es ist möglich, dass nachträgliche Änderungen bzw. Ergänzungen im englischen Originalartikel in dieser Übersetzung nicht berücksichtigt sind. Die in diesem Artikel enthaltenen Informationen basieren auf der/den englischsprachigen Produktversion(en). Die Richtigkeit dieser Informationen in Zusammenhang mit anderssprachigen Produktversionen wurde im Rahmen dieser Übersetzung nicht getestet. Microsoft stellt diese Informationen ohne Gewähr für Richtigkeit bzw. Funktionalität zur Verfügung und übernimmt auch keine Gewährleistung bezüglich der Vollständigkeit oder Richtigkeit der Übersetzung.
Alles erweitern | Alles schließen

Auf dieser Seite

Problembeschreibung

Auf einem Computer, auf dem Microsoft .NET Framework 1.0 installiert ist (und auf dem Microsoft Visual Studio .NET nicht installiert ist), wird Ihnen die folgende Fehlermeldung angezeigt, wenn Sie versuchen, auf ADO Interop verwendende Daten auf einer ASP.NET-Seite zuzugreifen, die in einer identischen Site residiert und auf demselben Computer gehostet wird:
Ausnahmedetails: System.NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.

Lösung

Registrieren Sie die Datei "Adodb.dll" im globalen Assemblycache (GAC), um dieses Problem zu beheben. Auf einem Computer, auf dem nur .NET Framework installiert ist, ist die Datei "Gacutil.exe" nicht vorhanden. Sie erhalten die Datei "Gacutil.exe" entweder, indem Sie das Microsoft .NET Framework SDK installieren, oder indem Sie ein Visual Studio.NET-Setupprojekt erstellen, welches das Installationsprogramm verwendet, um die richtigen Komponenten zu installieren.

Gehen Sie folgendermaßen vor, um die Datei "Adodb.dll" im GAC zu registrieren:
  1. Klicken Sie auf Start und anschließend auf Ausführen.
  2. Geben Sie im Dialogfeld Ausführen folgenden Befehl ein, und klicken Sie anschließend auf OK:
    C:\WINDOWS\Microsoft.NET\Framework\v1.0.3705\gacutil /i C:\Program Files\Microsoft.NET\Primary Interop Assemblies\adodb.dll

Status

Microsoft hat bestätigt, dass es sich hierbei um ein Problem bei den in diesem Artikel genannten Microsoft-Produkten handelt.

Weitere Informationen

Schritte zum Reproduzieren des Problems

  1. Erstellen Sie ein neues Visual C#-Projekt mit dem Namen "ADORefError". Standardmäßig wird "WebForm1.aspx" angezeigt.
  2. Klicken Sie im Menü Projekt auf Verweis hinzufügen.
  3. Auf der Registerkarte .NET wählen Sie adodb aus der Dropdownliste.
  4. Klicken Sie auf Auswählen und anschließend auf OK.
  5. Fügen Sie "Webform1.aspx" ein Steuerelement Bezeichnung aus der Toolbox hinzu.
  6. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf WebForm1.aspx. Klicken Sie dann auf Code anzeigen.
  7. Fügen Sie den folgenden Code in das Ereignis Page_Load ein:

    Hinweis: Sie müssen den Wert User Id <Benutzername> so ändern, dass er für ein Konto steht, das über die erforderlichen Berechtigungen verfügt, um diese Operationen in Bezug auf die Datenbank auszuführen.
    		//Create ADODB Objects
    		ADODB.Connection oConn = new ADODB.ConnectionClass();
    		ADODB.Recordset oRS = new ADODB.RecordsetClass();
    				//Change Connection String depending on your SQL Server 
    		string strConn = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=<username>;Initial Catalog=pubs;Data Source=Your SQLServer Name";
    					oConn.Open(strConn,"","",0);
    		object objRecs = 100;
    		oRS = oConn.Execute("select au_Id, au_lname from authors", out objRecs,0);
    
    		//Error is generated by referencing the Fields collection
    		Label1.Text = oRS.Fields["au_id"].Value.ToString();
    
    		//Close all connections
    		oRS.Close();
    		oConn.Close();
    
    		//Release COM Objects
    		oRS = null;
    		oConn = null;
    
    
  8. Kopieren Sie die Datei "Adodb.dll" aus dem Ordner "C:\Programme\Microsoft.NET\Primary Interop Assemblies\" in den Papierkorbordner (Bin) der Anwendung "ADORefError".
  9. Klicken Sie im Menü Erstellen auf Projektmappe erstellen.
  10. Starten Sie Microsoft Internet Explorer, und browsen Sie dann zu der Datei "WebForm1.aspx", indem Sie den folgenden URL eingeben. Dabei steht IIS-Servername für den Namen Ihres Microsoft-Internetinformationsdienste-Servers (IIS-Servers):
    http://IIS-Servername/ADORefError/WebForm1.aspx
  11. Identifizieren Sie einen Testcomputer, auf dem .NET Framework installiert ist (Microsoft Visual Studio .NET jedoch nicht). Erstellen Sie in IIS zwei virtuelle Verzeichnisse mit den Namen "Test1" und "Test2".
  12. Erstellen Sie zwei identische Sites: Aus dem Ordner "ADORefError" kopieren Sie "WebForm1.aspx" und den Papierkorbordner (Bin) in die Ordner "Test1" und "Test2" auf dem Testcomputer.
  13. Starten Sie Microsoft Internet Explorer, und browsen Sie dann zu der Datei "WebForm1.aspx" der Site "Test1", indem Sie den folgenden URL eingeben. Dabei steht IIS-Servername für den Namen Ihres Microsoft-Internetinformationsdienste-Servers (IIS-Servers):
    http://IIS-Servername/Test1/WebForm1.aspx
  14. Starten Sie eine weitere Instanz von Microsoft Internet Explorer, und browsen Sie dann zu der Datei "WebForm1.aspx" der Site "Test2", indem Sie den folgenden URL eingeben:
    http://IIS-Servername/Test2/WebForm1.aspx
  15. Wenn Sie auf die Datei "WebForm1.aspx" von "Test2" zugreifen, wird Ihnen die Fehlermeldung aus dem Abschnitt "Problembeschreibung" angezeigt.

Informationsquellen

Weitere Informationen zum Registrieren von DLL-Dateien im GAC finden Sie auf der folgenden Microsoft-Website:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cptutorials/html/global_assembly_cache_utility__gacutil_exe_.asp

Eigenschaften

Artikel-ID: 810098 - Geändert am: Montag, 19. März 2007 - Version: 5.4
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft ASP.NET 1.0
  • Microsoft ASP.NET 1.1
  • Microsoft ADO.NET 2.0
  • Microsoft ActiveX Data Objects 2.6
  • Microsoft ActiveX Data Objects 2.7
  • Microsoft ADO.NET 1.1
Keywords: 
kbtshoot kberrmsg kbbug kbwebforms KB810098
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.
Disclaimer zu nicht mehr gepflegten KB-Inhalten
Dieser Artikel wurde für Produkte verfasst, für die Microsoft keinen Support mehr anbietet. Der Artikel wird deshalb in der vorliegenden Form bereitgestellt und nicht mehr weiter aktualisiert.

Ihr Feedback an uns