最近asp.net程序在部署后,老是出现
DataTable 内部索引已损坏:“4”
或DataTable 内部索引已损坏:“7”
然后程序就down,站点无法访问了.异常信息:
   异常类型: System.Reflection.TargetInvocationException
   异常消息: 调用的目标发生了异常。内部异常信息(级别 1):
   异常类型: System.InvalidOperationException
   异常消息: DataTable 内部索引已损坏:“7”。说细请看:http://www.cnblogs.com/hjf1223/archive/2006/10/17/531416.html
欢迎有经验的朋友一起分析一下原因.

解决方案 »

  1.   

    线程信息:   线程 ID: 63   线程帐户名: NT AUTHORITY\NETWORK SERVICE
       正在模拟: False   堆栈跟踪:    在 System.Data.RBTree`1.GetNewNode(K key)
      在 System.Data.DataTable.SetNewRecordWorker(DataRow row, Int32 proposedRecord, DataRowAction action, Boolean isInMerge, Int32 position, Boolean fireEvent, Exception& deferredException)
      在 System.Data.DataTable.InsertRow(DataRow row, Int32 proposedID, Int32 pos, Boolean fireEvent)
      在 System.Data.DataRowCollection.Add(DataRow row)
      在 SoF.DaoServices.Products.ProductDataObject..ctor() 位置 E:\Projects\Gk-Platform\Code\SoF.DaoServices\Products\ProductDataObject.cs:行号 290  在 CreateImplementation(Object[] )
      在 IBatisNet.Common.Utilities.Objects.DelegateFactory.Create.Invoke(Object[] parameters)
      在 IBatisNet.Common.Utilities.Objects.DelegateFactory.CreateInstance(Object[] parameters)  在 IBatisNet.DataMapper.MappedStatements.ResultStrategy.ResultMapStrategy.Process(RequestScope request, IDataReader reader, Object resultObject)  在 IBatisNet.DataMapper.MappedStatements.MappedStatement.RunQueryForList(RequestScope request, IDalSession session, Object parameterObject, Int32 skipResults, Int32 maxResults, RowDelegate rowDelegate)
      在 IBatisNet.DataMapper.MappedStatements.MappedStatement.ExecuteQueryForList(IDalSession session, Object parameterObject, Int32 skipResults, Int32 maxResults)
      在 IBatisNet.DataMapper.SqlMapper.QueryForList(String statementName, Object parameterObject, Int32 skipResults, Int32 maxResults)
      在 SoF.DaoServices.MapperAdapter.QueryForList[T](String statementName, Object parameterObject, Int32 skipResult, Int32 maxResult, String[] p_strTableNames) 位置 E:\Projects\Gk-Platform\Code\SoF.DaoServices\MapperAdapter.cs:行号 324
      在 SoF.DaoServices.MapperAdapter.QueryForList[T](String statementName, Object parameterObject, String[] p_strTableNames) 位置 E:\Projects\Gk-Platform\Code\SoF.DaoServices\MapperAdapter.cs:行号 295更多详细请访问:http://www.cnblogs.com/hjf1223/archive/2006/10/17/531416.html
      

  2.   

    没有任何问题的,这应该是一个bug,到目前为设计者也还没有找到解决办法。大概的方向是:
    如果你使用了DataView,对DataTable进行查询,排序。然后再对DataTable进行修改的话,那这个问题就出现了。刚开始是从多线程的同步和异步修改入手,但是在其它情况仍然出现这样的问题。http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=838204&SiteID=1&mode=1&PageID=2
      

  3.   

    缓存DataTable后,取出DataTable进行绑定操作后,再取出相同的DataTable进行修改,问题就出现了。
      

  4.   

    , 等老大们来解决这种问题. 如果能确认进行哪些操作一定会有这种问题, 那就算bug
      

  5.   

    相信现在asp.net 2.0的程序投入使用的还不多,随着越来越广泛的使用,问题就会有越来越多人遇到了.
      

  6.   

    @cui55(随风幻想)
    已经大概找到解决办法了,不过还没有更新到程序中,下午试一下.
      

  7.   

    你尝试一下:
    在DataTable的RowChanging事件下执行 this.DefaultView.Sort = "";你试下看行不行,我的没有解决!:(
      

  8.   

    什么特殊办法啊,现在是办法我都要尝试了,我现在给DateTable定义了主键,没有上面的错误了,不过会出现其他乱七八糟的问题,什么空错误都会出现,可是我代码里面明明严格判断了。
      

  9.   

    由于产生这个问题有很多可能性,所以我目前的办法肯定不适合你,关于这个问题的更多讨论你可以看这贴.http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=838204&SiteID=1
      

  10.   

    我解决了,就是你的那个地址,谢谢了
    http://blog.csdn.net/cui55/archive/2006/11/07/1371535.aspx