我正在使用以下代码生成有序列表。在负载测试期间刷新此页面时,此代码在行号73,106,108上创建例外。 菜单在开发和测试环境中创建。它在生产方面或在负载测试期间崩溃**
try
{
dtDepartments = DB.GetDataSet("[dbo].[Departments]", AppLogic.CachingOn).Tables[0];
dtCategories = DB.GetDataSet("[dbo].[Categories]", AppLogic.CachingOn).Tables[0];
foreach (DataRow drDept in dtDepartments.Rows)
{
dtCategories.DefaultView.RowFilter = "[SEName] Like '" + drDept["SEName"].ToString() + "-%' And [ParentCategoryId] = 0";
CategoryView = null;
CategoryView = dtCategories.DefaultView;
foreach (DataRowView CategoryRowView in CategoryView)
{
DataRow CategoryRow = CategoryRowView.Row; \\line number 73
dtCategories.DefaultView.RowFilter = "[SEName] Like '" + drDept["SEName"].ToString() + "-%' And [ParentCategoryId] = " + CategoryRow["CategoryID"].ToString();
CategoryViewTwoCount = dtCategories.DefaultView.Count;
CategoryViewTwo = null;
if (CategoryViewTwoCount > 0)
{
CategoryViewTwo = dtCategories.DefaultView;
}
else
{
}
if (CategoryViewTwoCount > 0)
{
foreach (DataRowView CategoryRowViewTwo in CategoryViewTwo) \\line number 106
{
DataRow CategoryRowTwo = CategoryRowViewTwo.Row; \\line number 108
}
}
}
}
TreeMenu = HTMLContents.ToString();
if (CategoryViewTwo != null)
{
CategoryViewTwo = null;
}
if (CategoryView != null)
{
CategoryView = null;
}
HTMLContents = null;
dtCategories.Dispose();
dtDepartments.Dispose();
dtCategories = null;
dtDepartments = null;
}
catch (Exception ex)
{
//Log for staging
//AppLogic.WriteAppLogs(string.Format("Exception:\n{0}\nMessage:\n{1}Inner Exception:\n{2}\nStack Trace:{3}", ex.ToString(), ex.Message.ToString(), ex.InnerException.ToString(), ex.StackTrace.ToString()));
AppLogic.WriteAppLogs("Source " + ex.Source + ex.Message + ex.StackTrace);
//Log for production
//DB.ExecuteSQL(String.Format("INSERT INTO ErrorLog (source, errormsg) VALUES ({0}, {1})", DB.SQuote(CommonLogic.GetThisPageName(true)), DB.SQuote(ex.ToString())));
}
return TreeMenu;
来源App_Web_treeviewnew.aspx.cdcab7d2.de1ldkd2对象参考不 设置为对象的实例。在treeview.DisplayTreeMenu()中 treeviewNew.aspx.cs:第108行6/14/2013 5:25:19 PM
源mscorlib字典中没有给定的键。在 System.Collections.Generic.Dictionary`2.get_Item(TKey key)at System.Data.DataView.CopyTo(DataRowView []数组,Int32索引)at treeview.DisplayTreeMenu()上的System.Data.DataView.GetEnumerator() 在treeviewNew.aspx.cs:第106行6/14/2013 5:26:03 PM
源mscorlib字典中没有给定的键。在 System.Collections.Generic.Dictionary`2.get_Item(TKey key)at System.Data.DataView.CopyTo(DataRowView []数组,Int32索引)at treeview.DisplayTreeMenu()上的System.Data.DataView.GetEnumerator() 在treeviewNew.aspx.cs:第106行6/14/2013 5:26:38 PM
源mscorlib字典中没有给定的键。在 System.Collections.Generic.Dictionary`2.get_Item(TKey key)at System.Data.DataView.CopyTo(DataRowView []数组,Int32索引)at treeview.DisplayTreeMenu()上的System.Data.DataView.GetEnumerator() 在treeviewNew.aspx.cs:第106行6/14/2013 5:26:52 PM
源mscorlib字典中没有给定的键。在 System.Collections.Generic.Dictionary`2.get_Item(TKey key)at System.Data.DataView.CopyTo(DataRowView []数组,Int32索引)at treeview.DisplayTreeMenu()上的System.Data.DataView.GetEnumerator() 在treeviewNew.aspx.cs:第106行6/14/2013 5:27:04 PM
来源App_Web_treeviewnew.aspx.cdcab7d2.de1ldkd2对象参考不 设置为对象的实例。在treeview.DisplayTreeMenu()中 treeviewNew.aspx.cs:第108行6/14/2013 5:28:01 PM
源mscorlib字典中没有给定的键。在 System.Collections.Generic.Dictionary`2.get_Item(TKey key)at System.Data.DataView.CopyTo(DataRowView []数组,Int32索引)at treeview.DisplayTreeMenu()上的System.Data.DataView.GetEnumerator() 在treeviewNew.aspx.cs:第106行6/14/2013 5:29:45 PM
来源App_Web_treeviewnew.aspx.cdcab7d2.de1ldkd2对象参考不 设置为对象的实例。在treeview.DisplayTreeMenu()中 treeviewNew.aspx.cs:第108行6/14/2013 5:31:09 PM
来源App_Web_treeviewnew.aspx.cdcab7d2.de1ldkd2对象参考不 设置为对象的实例。在treeview.DisplayTreeMenu()中 treeviewNew.aspx.cs:line 73 6/14/2013 5:32:14 PM
源mscorlib字典中没有给定的键。在 System.Collections.Generic.Dictionary`2.get_Item(TKey key)at System.Data.DataView.CopyTo(DataRowView []数组,Int32索引)at treeview.DisplayTreeMenu()上的System.Data.DataView.GetEnumerator() 在treeviewNew.aspx.cs:第106行6/14/2013 5:32:27 PM
答案 0 :(得分:0)
异常意味着某处的空值,最有可能在这里:CategoryRowView.Row
,检查在抛出异常之前是否定义了此变量,并在其他行中执行相同的操作。