文章編號: 810098 - 上次校閱: 2007年5月9日 - 版次: 5.4

注意: 發生 「 物件參考未設定至物件的執行個體 」 時,就會發生錯誤您嘗試使用 ADO Interop ASP.NET Web 網頁上存取資料

系統提示本文適用於您使用的作業系統之外的作業系統。與您不相關的文章內容已停用。
警告 在 ADO 和 ADO MD 有不被完全環境中測試 Microsoft.NET Framework。它們可能會導致間歇性問題,特別是在服務為基礎的應用程式或在多執行緒應用程式中。本文中討論的技術應該只用於為暫時的量值 ADO.NET 的移轉過程。之後您有進行完整的測試,以確定是沒有相容性問題,您應該只使用這些技巧。利用這種方式中的 ADO 或 ADO MD 造成的問題是不受支援。如需詳細資訊請參閱下列的 「 Microsoft 知識庫 」 中的文件:
840667 ? (http://support.microsoft.com/kb/840667/ ) 在.NET Framework 應用程式中使用 ADO 和 ADO MD 時,您會收到未預期的錯誤

在此頁中

全部展開 | 全部摺疊

徵狀

Microsoft.NET Framework 1.0 安裝的電腦上 (與,不會 有 Microsoft 安裝 Visual Studio.NET),當您嘗試存取使用 ADO Interop 上 ASP.NET Web 網頁,位於相同的站台且的裝載在同一部電腦上的資料可能會收到下列錯誤訊息:
例外狀況詳細資料: System.NullReferenceException: 物件參照未設定至物件的執行個體。

解決方案

如果要解決這個問題,請在全域組件快取 (GAC) 中註冊 Adodb.dll 檔案。在.NET Framework 安裝的位置的電腦上檔案 Gacutil.exe 不存在可能是藉由安裝 Microsoft.NET Framework SDK,取得 gacutil 檔案,或建立 Visual Studio.NET 安裝專案,會使用安裝程式來安裝正確的元件。

如果要在 GAC 中註冊 Adodb.dll,請依照下列步驟執行:
  1. 按一下 [開始],然後按一下 [執行]。
  2. 在 [執行] 對話方塊中輸入下列命令,並按一下 [確定]
    C:\WINDOWS\Microsoft.NET\Framework\v1.0.3705\gacutil/i C:\Program Files\Microsoft.NET\Primary Interop Assemblies\adodb.dll

狀況說明

Microsoft 已確認這是在本文開頭所列之 Microsoft 產品中的問題。

其他相關資訊

重製行為的步驟

  1. 建立一個新的 Microsoft Visual C# 專案命名 ADORefError。 依預設值,WebForm1.aspx 出現。
  2. 在 [專案] 功能表上按一下 新增參考
  3. 在 [.NET] 索引標籤上選取 [從下拉式清單的 [adodb]。
  4. 按一下 [選取,然後按一下 [確定]
  5. 從工具箱拖曳 Label 控制項到 WebForm1.aspx。
  6. 在 [方案總管]WebForm1.aspx 上, 按一下滑鼠右鍵,然後按一下 [檢視程式碼
  7. 下列程式碼貼在 Page_Load 事件中:

    附註您必須具有適當的權限,才能執行這些作業在資料庫上的帳戶變更 < 使用者名稱 > 的使用者 ID 值。
    		//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. 將 Adodb.dll C:\Program Files\Microsoft.NET\Primary Interop Assemblies\] 資料夾中) 中複製到 ADORefError 應用程式的 Bin 資料夾。
  9. 在 [建置] 功能表上按一下 建置方案
  10. 啟動 Microsoft Internet Explorer 並瀏覽至 WebForm1.aspx 藉由指定其中 IISServerName 」 是 Microsoft 網際網路資訊服務 (IIS) 伺服器的名稱將下列 URL:
    http:// IISServerName /ADORefError/WebForm1.aspx
  11. 識別已安裝 (而不需 Microsoft Visual Studio.NET) 在.NET Framework 的測試電腦。在 IIS 中,建立兩個虛擬目錄並命名 Test1] 和 [Test2]。
  12. 建立兩個完全相同的站台: 從 ADORefError] 資料夾複製 WebForm1.aspx 和 Bin 資料夾至測試電腦上的 [Test1] 和 [Test2] 資料夾。
  13. 啟動 Microsoft Internet Explorer,並瀏覽至 Test1 WebForm1.aspx 站台,藉由指定其中 IISServerName 」 是 Microsoft 網際網路資訊服務 (IIS) 伺服器的名稱將下列 URL:
    http:// IISServerName /Test1/WebForm1.aspx
  14. 啟動 Microsoft Internet Explorer 的另一個執行個體,並瀏覽至 Test2 WebForm1.aspx 站台,藉由指定下列 URL:
    http:// IISServerName /Test2/WebForm1.aspx
  15. 當您存取 Test2 WebForm1.aspx 時,您所收到錯誤訊息,以詳細徵狀節中。

?考

如需有關在 GAC 中註冊.dll 檔案的詳細資訊,請造訪下列 Microsoft 網站:
http://msdn2.microsoft.com/en-us/library/aa309379(VS.71).aspx (http://msdn2.microsoft.com/en-us/library/aa309379(VS.71).aspx)

這篇文章中的資訊適用於:
  • 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
關鍵字:?
kbmt kbtshoot kberrmsg kbbug kbwebforms KB810098 KbMtzh
機器翻譯機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:810098? (http://support.microsoft.com/kb/810098/en-us/ )
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。