USTERKA: Komunikat o błędzie „Object reference not set to an instance of an object” (Odwołanie do obiektu nie jest ustawione dla wystąpienia obiektu) podczas próby uzyskania dostępu do danych przy użyciu ADO Interop na stronie ASP.NET

Tłumaczenia artykułów Tłumaczenia artykułów
Numer ID artykułu: 810098 - Zobacz jakich produktów dotyczą zawarte w tym artykule porady.
Uwaga: Środowiska ADO i ADO MD nie zostały w pełni przetestowane w środowisku Microsoft .NET Framework. Sporadycznie mogą powodować problemy, zwłaszcza w aplikacjach opartych na usługach lub w aplikacjach wielowątkowych. Techniki omówione w tym artykule należy stosować wyłącznie jako tymczasowe rozwiązanie podczas migracji do środowiska ADO.NET. Należy z nich skorzystać dopiero po przeprowadzeniu pełnego procesu testowania w celu upewnienia się, że nie ma problemów ze zgodnością. Wszystkie tego typu problemy powodowane przez ADO lub ADO MD nie są obsługiwane. Aby uzyskać więcej informacji, zobacz następujący artykuł z bazy wiedzy Microsoft Knowledge Base:
840667 Podczas używania środowisk ADO i ADO MD w aplikacji środowiska .NET Framework są wyświetlane komunikaty o nieoczekiwanych błędach
Rozwiń wszystko | Zwiń wszystko

Na tej stronie

Symptomy

Na komputerze z zainstalowanym środowiskiem Microsoft .NET Framework 1.0 (bez zainstalowanego programu Microsoft Visual Studio .NET) podczas próby uzyskania dostępu do danych za pomocą ADO Interop lub na stronie ASP.NET, która znajduje się w identycznej witrynie i jej hostem jest ten sam komputer, może się pojawić następujący komunikat o błędzie:
Exception Details: System.NullReferenceException: Object reference not set to an instance of an object. (Szczegóły wyjątku: System.NullReferenceException: Odwołanie do obiektu nie jest ustawione dla wystąpienia obiektu).

Rozwiązanie

Aby rozwiązać ten problem, zarejestruj plik Adodb.dll w globalnej pamięci podręcznej zestawów (GAC). Na komputerze, na którym zainstalowane jest tylko środowisko .NET Framework, plik Gacutil.exe nie istnieje. Uzyskaj plik gacutil, instalując zestaw Microsoft .NET Framework SDK, lub tworząc projekt instalacji programu Visual Studio.NET, który instaluje poprawne składniki za pomocą instalatora.

Aby zarejestrować plik Adodb.dll w globalnej pamięci podręcznej zestawów, wykonaj następujące kroki:
  1. Kliknij przycisk Start, a następnie kliknij polecenie Uruchom.
  2. W oknie dialogowym Uruchamianie wpisz następujące polecenie, a następnie kliknij przycisk OK:
    C:\WINDOWS\Microsoft.NET\Framework\v1.0.3705\gacutil /i C:\Program Files\Microsoft.NET\Primary Interop Assemblies\adodb.dll

Stan

Firma Microsoft potwierdziła, że jest to problem występujący w produktach firmy Microsoft wymienionych na początku tego artykułu.

Więcej informacji

Kroki prowadzące do odtworzenia problemu

  1. Utwórz nowy projekt Microsoft Visual C# o nazwie ADORefError. Domyślnie pojawi się plik WebForm1.aspx.
  2. W menu Project kliknij polecenie Add Reference.
  3. Na karcie .NET wybierz z listy rozwijanej pozycję adodb.
  4. Kliknij przycisk Wybierz, a następnie kliknij przycisk OK.
  5. Przeciągnij formant Etykieta z przybornika na stronę WebForm1.aspx.
  6. W oknie Solution Explorer kliknij prawym przyciskiem myszy formularz WebForm1.aspx, a następnie kliknij polecenie View Code.
  7. Wklej następujący kod w zdarzeniu Page_Load:

    Uwaga: Wartość User Id <nazwa użytkownika> należy zmienić na konto, które ma odpowiednie uprawnienia do wykonywania tych operacji w bazie danych.
    		//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. Skopiuj plik Adodb.dll (z folderu C:\Program Files\Microsoft.NET\Primary Interop Assemblies\ folder) do folderu Bin aplikacji ADORefError.
  9. W menu Build (Kompilacja) kliknij polecenie Build Solution (Skompiluj rozwiązanie).
  10. Uruchom program Microsoft Internet Explorer, a następnie przejdź do pliku WebForm1.aspx, podając następujący adres URL, gdzie NazwaSerweraIIS to nazwa serwera Internetowych usług informacyjnych firmy Microsoft (IIS):
    http://NazwaSerweraIIS/ADORefError/WebForm1.aspx
  11. Zidentyfikuj komputer testowy z zainstalowanym środowiskiem .NET Framework (bez programu Microsoft Visual Studio .NET). W Internetowych usługach informacyjnych utwórz dwa katalogi wirtualne i nazwij je Test1 oraz Test2.
  12. Utwórz dwie identyczne witryny: z folderu ADORefError skopiuj plik WebForm1.aspx i folder Bin do folderów Test1 i Test2 na komputerze testowym.
  13. Uruchom program Microsoft Internet Explorer, a następnie przejdź do pliku WebForm1.aspx witryny Test1, podając następujący adres URL, gdzie NazwaSerweraIIS to nazwa serwera Internetowych usług informacyjnych firmy Microsoft (IIS):
    http://NazwaSerweraIIS/Test1/WebForm1.aspx
  14. Uruchom inne wystąpienie programu Microsoft Internet Explorer i przejdź do strony WebForm1.aspx witryny Test2, określając następujący adres URL:
    http://NazwaSerweraIIS/Test2/WebForm1.aspx
  15. Po uzyskaniu dostępu do strony WebForm1.aspx witryny Test2 pojawi się komunikat o błędzie opisany w sekcji SYMPTOMY.

Materiały referencyjne

Aby uzyskać więcej informacji o rejestrowaniu plików dll w pamięci GAC, odwiedź następującą witrynę firmy Microsoft w sieci Web:
http://msdn2.microsoft.com/en-us/library/aa309379(VS.71).aspx
Uwaga: Niniejszy artykuł, przeznaczony do „SZYBKIEJ PUBLIKACJI”, został utworzony bezpośrednio przez organizację pomocy technicznej firmy Microsoft. Zawarte w nim informacje są udostępniane „w stanie takim, w jakim są” w odpowiedzi na pojawiające się problemy. W wyniku przyspieszonego trybu udostępniania materiały mogą zawierać błędy typograficzne i mogą zostać poprawione w dowolnym momencie bez uprzedzenia. Więcej informacji można znaleźć w Warunkach użytkowania.

Właściwości

Numer ID artykułu: 810098 - Ostatnia weryfikacja: 30 października 2013 - Weryfikacja: 1.0
Informacje zawarte w tym artykule dotyczą:
  • Microsoft ASP.NET 1.0
  • Microsoft ASP.NET 1.1
  • Microsoft ADO.NET 2.0
  • Microsoft ActiveX Data Objects 2.7
  • Microsoft ADO.NET 1.1
Słowa kluczowe: 
kbtshoot kberrmsg kbbug kbwebforms KB810098

Przekaż opinię

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com