ERROR: Recibe un mensaje de "Referencia a objeto no establecida como instancia de un objeto" cuando intenta el acceso a los datos utilizando ADO Interop en una página ASP.NET

Seleccione idioma Seleccione idioma
Id. de artículo: 810098 - Ver los productos a los que se aplica este artículo
Precaución: ADO y ADO MD no se han probado exhaustivamente en un entorno de Microsoft .NET Framework. Pueden ocasionar problemas intermitentes, especialmente en aplicaciones basadas en servicios o en aplicaciones multiproceso. Las técnicas que se describen en este artículo sólo deben utilizarse como medida temporal durante una migración a ADO.NET. Solo debe utilizarlas después de haber realizado pruebas exhaustivas para asegurarse de que no hay ningún problema de compatibilidad. No se ofrece soporte técnico para los problemas derivados del uso de ADO o ADO MD de esta manera. Para obtener más información al respecto, vea el artículo siguiente en Microsoft Knowledge Base:
840667 Recibe errores inesperados al utilizar ADO y ADO MD en una aplicación .NET Framework
Expandir todo | Contraer todo

En esta página

Síntomas

En un equipo que tiene instalado Microsoft .NET Framework 1.0 (y que no tiene instalado Microsoft Visual Studio .NET), al intentar tener acceso a los datos con ADO Interop en una página ASP.NET que reside en un sitio idéntico y que se aloja en el mismo equipo, puede recibir el mensaje de error siguiente:
Detalles de la excepción: System.NullReferenceException: La referencia de objeto no está establecida en una instancia de un objeto.

Solución

Para resolver este problema, registre el archivo Adodb.dll en la caché de ensamblados global (GAC). En un equipo donde sólo esté instalado .NET Framework, el archivo Gacutil.exe no existe. Obtenga el archivo gacutil instalando Microsoft .NET Framework SDK o cree un proyecto de configuración de Visual Studio.NET que use el instalador para instalar los componentes correctos.

Para registrar Adodb.dll en la GAC, siga estos pasos:
  1. Haga clic en Inicio y, a continuación, haga clic en Ejecutar.
  2. En el cuadro de diálogo Ejecutar, escriba el comando siguiente y luego haga clic en Aceptar:
    C:\WINDOWS\Microsoft.NET\Framework\v1.0.3705\gacutil /i C:\Program Files\Microsoft.NET\Primary Interop Assemblies\adodb.dll

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados al principio de este artículo.

Más información

Pasos para reproducir el comportamiento

  1. Cree un nuevo proyecto de Microsoft Visual C# denominado ADORefError. De manera predeterminada, aparece el archivo WebForm1.aspx.
  2. En el menú Proyecto, haga clic en Agregar referencia.
  3. En la ficha .NET, seleccione adodb en la lista desplegable.
  4. Haga clic en Seleccionar y, a continuación, haga clic en Aceptar.
  5. Arrastre un control Label desde el cuadro de herramientas a WebForm1.aspx.
  6. En el Explorador de soluciones, haga clic con el botón secundario del mouse (ratón) en WebForm1.aspx y, después, haga clic en Ver código.
  7. Pegue el siguiente código en el evento Page_Load:

    Nota: debe cambiar el valor <user name> del identificador de usuario por una cuenta que tenga los permisos necesarios para realizar estas operaciones en la base de datos.
    		//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. Copie Adodb.dll (desde la carpeta C:\Archivos de programa\Microsoft.NET\Primary Interop Assemblies\) a la carpeta Bin de la aplicación ADORefError.
  9. En el menú Generar, haga clic en Generar solución.
  10. Inicie Microsoft Internet Explorer y vaya a WebForm1.aspx especificando la dirección URL siguiente, donde nombreServidorIIS es el nombre del servidor de Servicios de Microsoft Internet Information Server (IIS):
    http://nombreServidorIIS/ADORefError/WebForm1.aspx
  11. Identifique un equipo de prueba que tenga instalado .NET Framework (con Microsoft Visual Studio .NET). En IIS, cree dos directorios virtuales y asígneles el nombre Test1 y Test2.
  12. Cree dos sitios idénticos: en la carpeta ADORefError, copie WebForm1.aspx y la carpeta Bin a las carpetas Test1 y Test2 en el equipo de prueba.
  13. Inicie Microsoft Internet Explorer y vaya a WebForm1.aspx de Test1 especificando la dirección URL siguiente, donde nombreServidorIIS es el nombre del servidor de Servicios de Microsoft Internet Information Server (IIS):
    http://nombreServidorIIS/Test1/WebForm1.aspx
  14. Inicie otra sesión de Microsoft Internet Explorer y vaya a WebForm1.aspx de Test2 especificando la dirección URL siguiente:
    http://nombreServidorIIS/Test2/WebForm1.aspx
  15. Cuando tiene acceso a WebForm1.aspx en Test2, recibe el mensaje de error detallado en la sección SÍNTOMAS.

Referencias

Para obtener más información acerca de cómo registrar archivos .dll en GAC, visite el siguiente sitio web de Microsoft:
http://msdn.microsoft.com/es-es/library/aa309379(VS.71).aspx
Nota: es un artículo de "PUBLICACIÓN RÁPIDA" creado directamente por la organización de soporte técnico de Microsoft. La información aquí contenida se proporciona como está, como respuesta a problemas que han surgido. Como consecuencia de la rapidez con la que lo hemos puesto disponible, los materiales podrían incluir errores tipográficos y pueden ser revisados en cualquier momento sin previo aviso. Vea las Condiciones de uso para otras consideraciones

Propiedades

Id. de artículo: 810098 - Última revisión: miércoles, 30 de octubre de 2013 - Versión: 1.0
La información de este artículo se refiere a:
  • 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
Palabras clave: 
kbtshoot kberrmsg kbbug kbwebforms KB810098

Enviar comentarios

 

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