ID do artigo: 810098 - Última revisão: quarta-feira, 20 de dezembro de 2006 - Revisão: 6.2
BUG: O erro "Referência de objeto não definida para uma instância de um objeto" ocorre quando você tenta acessar os dados usando o ADO Interop em uma página do ASP.NET
Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.
Cuidado Os ADO e os ADO MD não foram totalmente testados em um ambiente
do Microsoft .NET Framework. Eles talvez causem problemas intermitentes,
especialmente em aplicativos com base em serviço ou em aplicativos multithread.
As técnicas descritas neste artigo só devem ser usadas como uma medida
temporária durante a migração para o ADO.NET. Você só deve usá-las depois de
realizar um teste completo para verificar se não há problemas de
compatibilidade. Todos os problemas causados pelo uso de ADO ou de ADO MD dessa
maneira não têm suporte. Para obter mais informações, leia o artigo na Base de
Dados de Conhecimento Microsoft (a página pode estar em inglês):
840667
(http://support.microsoft.com/kb/840667/
)
Você recebe erros inesperados ao usar ADO e ADO MD em um aplicativo do .NET Framework
Em um computador que tem o Microsoft .NET Framework 1.0
instalado (e que não tenha o Microsoft Visual Studio .NET instalado), ao tentar
acessar os dados usando o ADO Interop em uma página do ASP.NET que resida em um
site idêntico e que esteja hospedado no mesmo computador, a seguinte mensagem
de erro poderá ser exibida:
Detalhes da Exceção:
System.NullReferenceException: Referência de objeto não definida para uma
instância de um objeto.
Para resolver este problema, registre o arquivo Adodb.dll no
GAC (cache de assembly global). Em um computador em que apenas o .NET Framework
está instalado, o arquivo Gacutil.exe não existe. Obtenha o arquivo gacutil
instalando o Microsoft .NET Framework SDK ou crie um projeto de instalação do
Visual Studio.NET que use o instalador para instalar os componentes
corretos.
Para registrar Adodb.dll no GAC, execute as seguintes
etapas:
Clique em Iniciar e em
Executar.
Na caixa de diálogo Executar, digite o
seguinte comando e, em seguida, clique em OK:
Crie um novo projeto do Microsoft Visual C# chamado
ADORefError. Por padrão, o WebForm1.aspx aparece.
No menu Project, clique em Add
Reference.
Na guia .NET, selecione
adodb na lista suspensa.
Clique em Select e, em seguida, clique em
OK.
Arraste um controle Label da caixa de ferramentas para o WebForm1.aspx.
No Solution Explorer, clique com o botão
direito do mouse em WebForm1.aspx e, em seguida, clique em
View Code.
Cole o seguinte código no evento Page_Load:
Observação É necessário alterar o valor de User Id <nome_do_usuário>
para uma conta que tenha as permissões apropriadas para realizar as operações
no banco de dados.
//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;
Copie o Adodb.dll (da pasta C:\Program
Files\Microsoft.NET\Primary Interop Assemblies\) para a pasta Bin do aplicativo
ADORefError.
No menu Build, clique em Build
Solution.
Inicie o Microsoft Internet Explorer e, em seguida, navegue
até o WebForm1.aspx, especificando a seguinte URL, em que
Nome_do_Servidor_ISS é o nome do servidor do IIS
(Serviços de informações da Internet):
Identifique um computador de teste que tenha o .NET
Framework instalado (sem o Microsoft Visual Studio .NET). No IIS, crie dois
diretórios virtuais e nomeie-os Test1 e Test2.
Crie dois sites idênticos: da pasta ADORefError, copie o
WebForm1.aspx e a pasta Bin para as pastas Test1 e Test2 no computador de
teste.
Inicie o Microsoft Internet Explorer e navegue até o
WebForm1.aspx do site Test1, especificando a seguinte URL, em que
Nome_do_servidor_ISS é o nome do servidor do IIS
(Serviços de informações da Internet):
http://Nome_do_servidor_ISS/Test1/WebForm1.aspx
Inicie outra instância do Microsoft Internet Explorer e
navegue até WebForm1.aspx do site Test2, especificando a seguinte URL, em que:
http://Nome_do_servidor_ISS/Test2/WebForm1.aspx
Ao acessar o WebForm1.aspx de Test2, a seguinte mensagem de
erro detalhada na seção SINTOMAS, poderá ser exibida.
Quanto esforço foi necessário para seguir os procedimentos deste artigo?
Muito baixo
Baixo
Moderado
Alto
Muito alto
O que podemos fazer para melhorar essa informação?
Para proteger sua privacidade, não inclua informações de contato em seus comentários.
Obrigado! Seus comentários são usados para nos ajudar a aperfeiçoar o conteúdo de suporte. Para obter mais opções de ajuda, visite a Home Page de Ajuda e Suporte.