CORRECÇÃO: System.ArgumentOutOfRangeException ocorre intermitentemente com o ADO.NET

Traduções deste artigo Traduções deste artigo
ID do artigo: 836874 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Sintomas

Em um aplicativo ADO.NET, intermitentemente poderá receber a seguinte mensagem de erro exceção:
System.ArgumentOutOfRangeException: O índice estava fora do intervalo. Deve ser não-negativo e menor que o tamanho da coleção. Nome do parâmetro: índice

Causa

Você recebe essa mensagem de erro se você cria ou destruir objetos relacionados ao DataSet (como um objeto DataView ) em um manipulador de eventos para um objeto DataSet , ou em um objeto que está associado a um objeto DataSet . Por exemplo, este erro foi reproduzido em um aplicativo que continha um controle de grade que estava criando objetos de DataView filho em um manipulador de eventos ListChanged para a grade. Isso permite que estado interno do objeto DataSet subjacente para alterar durante uma operação de onde devem permanecer estática.

Resolução

Um hotfix suportado agora está disponível da Microsoft, mas destina-se somente a corrigir o problema descrito neste artigo. Aplique-o somente nos sistemas que apresentarem esse problema específico. Esta correcção poderá submetida a testes adicionais. Portanto, se você não tiver sido gravemente afetado por esse problema, recomendamos que você aguarde o próximo service pack que contém esse hotfix.

Para resolver esse problema imediatamente, contate o Atendimento Microsoft para obter o hotfix. Para obter uma lista completa de telefones do Atendimento Microsoft e informações sobre os custos de suporte da, visite o seguinte site:
http://support.microsoft.com/contactus/?ws=support
Observação Em alguns casos, as taxas cobradas pelas ligações para chamadas de suporte podem ser canceladas se um profissional de suporte da Microsoft determinar que uma atualização específica resolverá o problema. Os custos normais de suporte serão aplicados a questões e problemas que não se qualificam à atualização específica em questão de suporte adicionais.A versão em inglês deste hotfix apresenta os atributos de arquivo (ou posteriores) listados na tabela a seguir. As datas e horas desses arquivos são listadas na acordo hora universal coordenada (UTC). Quando você exibe as informações do arquivo, ele é convertido para a hora local. Para encontrar a diferença entre o UTC e a hora local, use a guia fuso horário na ferramenta Data e hora no painel de controle.
   Date         Time   Version            Size    File name
   --------------------------------------------------------------
   02-Mar-2004  18:39  1.1.4322.1007   1,294,336  System.data.dll                                             

Como Contornar

Não criar ou destruir objetos relacionados ao DataSet (como um objeto DataView ) dentro de um manipulador de eventos para um objeto DataSet .

Situação

A Microsoft confirmou que este é um problema nos produtos da Microsoft que estão listados na seção "Aplica-se a" deste artigo.
A pilha de chamadas para essa exceção depende da funcionalidade do seu aplicativo e a causa exata do erro. A seguir estão dois exemplos que ocorreram quando filho DataView objetos são criados no manipulador de eventos ListChanged para um controle:

Pilha de chamadas de exemplo 1

System.Collections.ArrayList.get_Item(Int32 index)
Sstem.Data.DataTable.RecordStateChanged(Int32 record1, DataViewRowState oldState1, DataViewRowState newState1, Int32 record2, DataViewRowState oldState2, DataViewRowState newState2)
System.Data.DataTable.SetNewRecord(DataRow row, Int32 proposedRecord, DataRowAction action, Boolean isInMerge)
System.Data.DataRow.EndEdit()
System.Data.DataRow.set_Item(DataColumn column, Object value)
System.Data.DataRow.set_Item(String columnName, Object value)

Pilha de chamadas de exemplo 2

System.Collections.ArrayList.get_Item(Int32 index)
System.Data.DataTable.ResetIndexes()
System.Data.Merger.MergeTable(DataTable src, DataTable dst)
System.Data.Merger.MergeTableData(DataTable src)
System.Data.Merger.MergeDataSet(DataSet source)
System.Data.DataSet.Merge(DataSet dataSet, Boolean preserveChanges, MissingSchemaAction missingSchemaAction)

Observação Esses são apenas exemplos e não são apenas pilhas de chamadas que podem ocorrer com este erro.

Referências

Para obter informações adicionais, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
824684Descrição da terminologia padrão que é usada para descrever as atualizações de software
Para obter informações adicionais sobre uma exceção similar que ocorre com uma versão anterior do ADO.NET, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
332215CORRECÇÃO: "System.ArgumentOutOfRangeException: o índice estava fora do intervalo" erro ocorre com SqlClient.SqlConnection.Open()
Observação A correção para o artigo 332215 já está incluída no .NET Framework versão 1.1.

Propriedades

ID do artigo: 836874 - Última revisão: quinta-feira, 1 de junho de 2006 - Revisão: 2.1
A informação contida neste artigo aplica-se a:
  • Microsoft ADO.NET 1.1
Palavras-chave: 
kbmt kbhotfixserver kbqfe KB836874 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 836874
Aviso de Isenção de Responsabilidade sobre Conteúdo do KB Aposentado
Este artigo trata de produtos para os quais a Microsoft não mais oferece suporte. Por esta razão, este artigo é oferecido "como está" e não será mais atualizado.

Submeter comentários

 

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