HATA: ASP.NET sayfasında ADO Birlikte Çalışabilirlik kullanarak verilere erişmeye çalıştığınızda "Nesne başvurusu bir nesnenin örneğine ayarlanmadı" hatası oluşuyor

Makale çevirileri Makale çevirileri
Makale numarası: 810098 - Bu makalenin geçerli olduğu ürünleri görün.
Uyarı ADO ve ADO MD, bir Microsoft .NET Framework ortamında tümüyle sınanmamışlardır. Özellikle de hizmet tabanlı veya çok iş parçacıklı uygulamalarda zaman zaman sorunlara neden olabilirler. Bu makalede açıklanan teknikler ADO.NET'e geçiş sırasında geçici bir önlem olarak kullanılmalıdır. Bu teknikleri yalnızca tam sınama gerçekleştirip herhangi bir uyumluluk sorunu bulunmadığından emin olduktan sonra kullanmalısınız. ADO veya ADO MD bu şekilde kullanımından kaynaklanan sorunlar desteklenmez. Daha fazla bilgi için, aşağıdaki Microsoft Bilgi Bankası makalesine bakın:
840667 .NET Framework uygulamasında ADO ve ADO MD kullanırken beklenmedik hatalar oluşuyor (Bu bağlantı, bir kısmı veya tamamı İngilizce olan içeriğe işaret edebilir)
Hepsini aç | Hepsini kapa

Bu Sayfada

Belirtiler

Microsoft .NET Framework 1.0 yüklü olan (ve Microsoft Visual Studio .NET yüklenmemiş) bir bilgisayarda, aynı özelliklere sahip bir sitede bulunan bir ASP.NET sayfasında ADO Birlikte Çalışabilirlik kullanarak verilere erişmeye çalıştığınızda, aşağıdaki hata iletisini alabilirsiniz:
Özel Durum Ayrıntıları: System.NullReferenceException: Nesne başvurusu bir nesnenin örneğine ayarlanmadı.

Çözüm

Bu sorunu çözmek için, Adodb.dll dosyasını genel derleme önbelleğine (GAC) kaydedin. Yalnızca .NET Framework yüklü olan bir bilgisayarda, Gacutil.exe dosyası bulunmaz. Microsoft .NET Framework SDK yükleyerek gacutil dosyasını edinin veya yükleyiciyi kullanarak doğru bileşenleri yüklemek için bir Visual Studio.NET kurulum projesi oluşturun.

Adodb.dll dosyasını GAC'ye kaydetmek için şu adımları izleyin:
  1. Başlat'ı ve sonra Çalıştır'ı tıklatın.
  2. Çalıştır iletişim kutusuna aşağıdaki komutu yazın ve sonra Tamam'ı tıklatın:
    C:\WINDOWS\Microsoft.NET\Framework\v1.0.3705\gacutil /i C:\Program Files\Microsoft.NET\Primary Interop Assemblies\adodb.dll

Durum

Microsoft bu sorunun, bu makalenin başında listelenen Microsoft ürünlerinde bulunduğunu onaylamıştır.

Daha fazla bilgi

Davranışı Yeniden Oluşturma Adımları

  1. ADORefError adlı yeni bir Microsoft Visual C# projesi oluşturun. Varsayılan olarak, WebForm1.aspx görüntülenir.
  2. Project (Proje) menüsünde, Add Reference'ı (Başvuru Ekle) tıklatın.
  3. .NET sekmesinde, açılır listeden adodb öğesini seçin.
  4. Select'i (Seç) ve sonra OK'i (Tamam) tıklatın.
  5. Araç kutusundan bir Label (Etiket) denetimini WebForm1.aspx dosyasına sürükleyin.
  6. Solution Explorer'da, WebForm1.aspx öğesini sağ tıklatın ve ardından View Code'u (Kodu Göster) tıklatın.
  7. Aşağıdaki kodu Page_Load olayına yapıştırın:

    Not Kullanıcı Kimliği <kullanıcı adı> değerini, veritabanında bu işlemleri gerçekleştirmek için uygun izinleri bulunan bir hesap olarak değiştirmelisiniz.
    		//ADODB Nesneleri oluştur
    		ADODB.Connection oConn = new ADODB.ConnectionClass();
    		ADODB.Recordset oRS = new ADODB.RecordsetClass();
    		
    		//Bağlantı Dizesini SQL Server dizenize göre değiştirin
     		strConn = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=<kullanıcıadı>;Initial Catalog=pubs;Data Source=SQLServer Adınız";
    			
    		oConn.Open(strConn,"","",0);
    		object objRecs = 100;
    		oRS = oConn.Execute("yazarlardan au_Id, au_lname seçin", out objRecs,0);
    
    		//Fields topluluğuna başvurulduğunda hata oluşur
    		Label1.Text = oRS.Fields["au_id"].Value.ToString();
    
    		//Tüm bağlantıları kapatın
    		oRS.Close();
    		oConn.Close();
    
    		//COM Nesnelerini bırakın
    		oRS = null;
    		oConn = null;
    
    
  8. Adodb.dll dosyasını (C:\Program Files\Microsoft.NET\Primary Interop Assemblies\ klasöründen) ADORefError uygulamasının Bin klasörüne kopyalayın.
  9. Build (Yapı) menüsünde, Build Solution'ı (Çözümü Derle) tıklatın.
  10. Microsoft Internet Explorer'ı başlatın ve aşağıdaki URL'yi yazıp WebForm1.aspx dosyasına gözatın; burada IISSunucuAdı, Microsoft Internet Information Services (IIS) sunucunuzun adıdır:
    http://IISSunucuAdı/ADORefError/WebForm1.aspx
  11. .NET Framework'ün yüklü olduğu (Microsoft Visual Studio .NET olmadan) bir sınama bilgisayarını tanımlayın. IIS'de, Test1 ve Test2 adlı iki sanal dizin oluşturun.
  12. Birbirinin aynı iki site oluşturun: ADORefError klasöründen, WebForm1.aspx dosyasını ve Bin klasörünü sınama bilgisayarındaki Test1 ve Test2 klasörlerine kopyalayın.
  13. Microsoft Internet Explorer'ı başlatın ve aşağıdaki URL'yi yazıp Test1 sitesinin WebForm1.aspx dosyasına gözatın; burada IISSunucuAdı, Microsoft Internet Information Services (IIS) sunucunuzun adıdır:
    http://IISSunucuAdı/Test1/WebForm1.aspx
  14. Microsoft Internet Explorer'ın başka bir kopyasını başlatın ve aşağıdaki URL'yi yazıp Test2 sitesinin WebForm1.aspx dosyasına gözatın:
    http://IISSunucuAdı/Test2/WebForm1.aspx
  15. Test2 sitesinin WebForm1.aspx dosyasına eriştiğinizde, BELİRTİLER bölümünde ayrıntılı olarak açıklanan hata iletisini alırsınız.

Referanslar

.dll dosyalarını GAC'ye kaydetme hakkında daha fazla bilgi için, aşağıdaki Microsoft Web sitesini ziyaret edin:
http://msdn2.microsoft.com/en-us/library/aa309379(VS.71).aspx

Özellikler

Makale numarası: 810098 - Last Review: 9 Mayıs 2007 Çarşamba - Gözden geçirme: 5.3
Bu makaledeki bilginin uygulandığı durum:
  • 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
Anahtar Kelimeler: 
kbtshoot kberrmsg kbbug kbwebforms KB810098

Geri Bildirim Ver

 

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