FIX: System.ArgumentOutOfRangeException generato in modo intermittente con ADO.NET

Traduzione articoli Traduzione articoli
Identificativo articolo: 836874 - Visualizza i prodotti a cui si riferisce l?articolo.
Espandi tutto | Chiudi tutto

Sintomi

In un'applicazione ADO.NET, si potrebbe in modo intermittente il seguente messaggio eccezione di errore:
System.ArgumentOutOfRangeException: Indice non compreso nell'intervallo. Deve essere non negativo e minore della dimensione dell'insieme. Nome del parametro: indice

Cause

Viene visualizzato questo messaggio di errore se si crea o eliminare oggetti relativi al DataSet (ad esempio un oggetto di DataView ) in un gestore eventi per un oggetto DataSet o in un oggetto associato a un oggetto DataSet . Ad esempio, questo errore Ŕ stato riprodotto in un'applicazione contenente un controllo griglia che Ŕ stato creando oggetti DataView figlio in un gestore di eventi ListChanged per la griglia. In questo modo lo stato interno dell'oggetto DataSet sottostante per modificare durante un'operazione in cui deve rimanere statico.

Risoluzione

Un hotfix supportato Ŕ disponibile da Microsoft, tuttavia Ŕ destinato esclusivamente per risolvere il problema descritto in questo articolo. Utilizzarla solo nei sistemi in cui si verifica questo problema specifico. Questo aggiornamento rapido (hotfix) potrebbe essere eseguiti ulteriori test. Se non si Ŕ notevolmente interessati da questo problema, si consiglia di attendere il prossimo service pack contenente questo aggiornamento rapido (hotfix) per.

Per risolvere immediatamente questo problema, contattare il servizio supporto tecnico clienti Microsoft per ottenere l'hotfix. Per un elenco completo di numeri di telefono del servizio supporto tecnico clienti Microsoft e per informazioni sui costi dell'assistenza, visitare il seguente sito Web Microsoft:
http://support.microsoft.com/contactus/?ws=support
Nota in casi particolari, le spese normalmente addebitate per le chiamate al Servizio Supporto Tecnico Clienti Microsoft potrebbero essere annullate qualora un addetto del Supporto Tecnico Microsoft dovesse determinare che uno specifico aggiornamento risolverÓ il problema. I normali costi del Servizio Supporto Tecnico Clienti verranno applicati per eventuali ulteriori domande e problemi che non dovessero rientrare nello specifico aggiornamento in questione.La versione inglese di questo aggiornamento rapido (hotfix) presenta gli attributi di file (o successivi) elencati nella tabella riportata di seguito. Date e ore per questi file sono indicati nella coordinated universal time (UTC). Quando si visualizzano le informazioni sul file, viene convertito in ora locale. Per calcolare la differenza tra ora UTC e l'ora locale, utilizzare la scheda fuso orario dello strumento Data e ora del Pannello di controllo.
   Date         Time   Version            Size    File name
   --------------------------------------------------------------
   02-Mar-2004  18:39  1.1.4322.1007   1,294,336  System.data.dll                                             

Workaround

Non creare o eliminare oggetti di DataSet correlati (ad esempio un oggetto DataView ) all'interno di un gestore eventi per un oggetto DataSet .

Status

Microsoft ha confermato che questo problema riguarda i prodotti sono elencati nella sezione "Si applica a" di questo articolo.
Lo stack di chiamate per questa eccezione varia a seconda della funzionalitÓ dell'applicazione e la causa esatta dell'errore. Di seguito Ŕ riportati due esempi che si sono verificati quando vengono creati oggetti DataView figlio nel gestore dell'evento ListChanged per un controllo:

Esempio di stack di chiamate 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)

Esempio di stack di chiamate 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)

Nota Questi sono solo esempi e non gli unico stack di chiamate che possono verificarsi con questo errore.

Riferimenti

Per ulteriori informazioni, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
824684Descrizione della terminologia standard utilizzata per descrivere gli aggiornamenti software Microsoft
Per ulteriori informazioni su un'eccezione simile che si verifica con una versione precedente di ADO.NET, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
332215FIX: "System.ArgumentOutOfRangeException: indice non compreso nell'intervallo" errore si verifica con SqlClient.SqlConnection.Open()
Nota La correzione per l'articolo della Microsoft Knowledge Base 332215 Ŕ giÓ inclusa in .NET Framework versione 1.1.

ProprietÓ

Identificativo articolo: 836874 - Ultima modifica: giovedý 1 giugno 2006 - Revisione: 2.1
Le informazioni in questo articolo si applicano a:
  • Microsoft ADO.NET 1.1
Chiavi:á
kbmt kbhotfixserver kbqfe KB836874 KbMtit
Traduzione automatica articoli
Il presente articolo Ŕ stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non Ŕ sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, pi¨ o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non Ŕ la sua. Microsoft non Ŕ responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 836874
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.
Dichiarazione di non responsabilitÓ per articoli della Microsoft Knowledge Base su prodotti non pi¨ supportati
Questo articolo Ŕ stato scritto sui prodotti per cui Microsoft non offre pi¨ supporto. L?articolo, quindi, viene offerto ?cosý come Ŕ? e non verrÓ pi¨ aggiornato.

Invia suggerimenti

 

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