REVISIÓN: System.ArgumentOutOfRangeException produce intermitentemente con ADO.NET

Seleccione idioma Seleccione idioma
Id. de artículo: 836874 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

Síntomas

En una aplicación de ADO.NET, puede recibir intermitentemente el mensaje de error de excepción siguiente:
System.ArgumentOutOfRangeException: Índice estaba fuera del intervalo. Debe ser un valor no negativo e inferior al tamaño de la colección. Nombre de parámetro: índice

Causa

Recibirá este mensaje de error si crear o destruir objetos relacionados con el DataSet (como un objeto DataView ) en un controlador de eventos para un objeto DataSet , o en un objeto que está asociado con un objeto DataSet . Por ejemplo, este error se ha reproducido en una aplicación que contiene un control de cuadrícula que estaba creando objetos DataView de secundarios en un controlador de eventos ListChanged de la cuadrícula. Esto permite que el estado interno del objeto DataSet subyacente para cambiar durante una operación donde deben permanecer estática.

Solución

Ahora hay disponible un hotfix para el que Microsoft proporciona soporte técnico, pero que sólo se diseñó para corregir el problema descrito en este artículo. Aplíquelo sólo a sistemas que experimenten este problema específico. Este hotfix puede ser sometido a comprobaciones adicionales. Por tanto, si no se ve muy afectado por este problema, se recomienda que espere al próximo Service Pack que contenga este hotfix.

Para resolver este problema inmediatamente, póngase en contacto con soporte técnico de Microsoft para obtener la revisión. Para obtener una lista completa de los números de teléfono de los servicios de soporte técnico de Microsoft e información acerca de los costos de soporte, visite el siguiente sitio Web:
http://support.microsoft.com/contactus/?ws=support
Nota en casos especiales, los costos derivados normalmente de las llamadas al soporte técnico pueden cancelarse si un profesional de soporte técnico de Microsoft determina que una actualización específica resolverá el problema. Los costos habituales de soporte se aplicarán a las preguntas de soporte técnico adicionales y problemas que no guarden relación con la actualización en cuestión.La versión en inglés de este hotfix tiene los atributos de archivo enumerados en la siguiente tabla u otros posteriores. Las fechas y horas de estos archivos aparecen en la hora universal coordinada (UTC). La información de los archivos se convertirá a la hora local cuando la vea. Para averiguar la diferencia entre hora UTC y la hora local, utilice la ficha zona horaria de la herramienta fecha y hora en el panel de control.
   Date         Time   Version            Size    File name
   --------------------------------------------------------------
   02-Mar-2004  18:39  1.1.4322.1007   1,294,336  System.data.dll                                             

Solución

No puede crear o destruir objetos relacionados con el DataSet (como un objeto DataView ) dentro de un controlador de eventos para un objeto DataSet .

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados en la sección "La información de este artículo se refiere a".
La pila de llamadas para esta excepción depende de la funcionalidad de la aplicación y la causa exacta del error. Los siguientes son dos ejemplos que se han producido cuando se crean objetos DataView de secundarios en el controlador de eventos ListChanged para un control:

Pila de llamada de ejemplo 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)

Pila de llamadas de ejemplo 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 Estos son sólo ejemplos y no las pilas de llamada única que pueden producirse con este error.

Referencias

Para obtener información adicional, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
824684Descripción de la terminología estándar utilizada para describir las actualizaciones de software de Microsoft
Para obtener información adicional acerca de una excepción similar que se produce con una versión anterior de ADO.NET, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
332215REVISIÓN: "System.ArgumentOutOfRangeException: índice estaba fuera del intervalo" se produce un error con SqlClient.SqlConnection.Open()
Nota La corrección para el artículo de Knowledge Base 332215 ya se incluye en .NET Framework versión 1.1.

Propiedades

Id. de artículo: 836874 - Última revisión: jueves, 01 de junio de 2006 - Versión: 2.1
La información de este artículo se refiere a:
  • Microsoft ADO.NET 1.1
Palabras clave: 
kbmt kbhotfixserver kbqfe KB836874 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 836874
Renuncia a responsabilidad de los contenidos de la KB sobre productos a los que ya no se ofrece asistencia alguna
El presente artículo se escribió para productos para los que Microsoft ya no ofrece soporte técnico. Por tanto, el presente artículo se ofrece "tal cual" y no será actualizado.

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