我有一个大型存储过程,返回5个不同的表。 我需要将存储过程生成的这些表显示为HTML。
因为我正在努力找到问题是由于封闭类中方法给出的看似毫无意义的错误消息所致;我正在寻找一个新问题的解决方案,但欢迎所有贡献
我继承了一个使用非常古老的方法通过IES.Core.ReportTool执行此操作的系统。 我有一个XLST文件和一些c#来做到这一点 -
string connStr = ConfigurationManager.AppSettings["DBConnStr"];
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "Proc_cisiv_ProgramDayData";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@ProgramDayNodeID", SqlDbType.Int);
cmd.Parameters.Add("@UserID", SqlDbType.Int);
PageInfo pInfo = CMS.DocumentEngine.DocumentContext.CurrentPageInfo;
cmd.Parameters["@ProgramDayNodeID"].Value = pInfo.NodeID;
cmd.Parameters["@UserID"].Value = CMS.Membership.MembershipContext.AuthenticatedUser.UserID;
ReportTool rt = new ReportTool();
try
{
lit.Text = rt.GenerateHTML(Server.MapPath("~/CMSPages/XSLT/ProgrammeDay.xslt"), connStr, cmd, false);
}
catch (Exception ex)
{
lit.Text = ex.ToString();
}
但有些东西不太正确,它会抛出一个Null Reference Exception,如下所示 -
System.NullReferenceException:未将对象引用设置为对象的实例。 at IES.Core.ReportTool.BaseGenerateHTMLFromSQL(String xslPathAndFileName,String xsdPathAndFileName,String xmlMapPathAndFileName,XsltArgumentList xslArgs,String DBConnStr,SqlCommand sqlCommandObject,Boolean debug)at IES.Core.ReportTool.GenerateHTML(String xslPathAndFileName,String DBconnStr,SqlCommand sqlCommandObject,Boolean debug )在C:\ Projects \ brsweb \ CMSWebParts \ MyWebPart \ ProgramDayDetail.ascx.cs:第37行的ProgramDayDetail.Page_Load(Object sender,EventArgs e)中
第37行
lit.Text = rt.GenerateHTML(Server.MapPath("~/CMSPages/XSLT/ProgrammeDay.xslt"), connStr, cmd, false);
到目前为止我找到的解决方案(还没完成,但它显示了应该从存储过程返回的数据)
string connStr = ConfigurationManager.AppSettings["DBConnStr"];
SqlConnection connection = new SqlConnection(connStr);
connection.Open();
SqlCommand cmd = connection.CreateCommand();
cmd.CommandText = "Proc_cisiv_ProgramDayData";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@ProgramDayNodeID", SqlDbType.Int);
cmd.Parameters.Add("@UserID", SqlDbType.Int);
PageInfo pInfo = CMS.DocumentEngine.DocumentContext.CurrentPageInfo;
cmd.Parameters["@ProgramDayNodeID"].Value = pInfo.NodeID;
cmd.Parameters["@UserID"].Value = CMS.Membership.MembershipContext.AuthenticatedUser.UserID;
string mapPath = "";
try
{
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
lit.Text = ds.GetXml();
}
catch (Exception ex)
{
lit.Text = ex.ToString() + "</br></br>" + pInfo.NodeID + "</br></br>" + CMS.Membership.MembershipContext.AuthenticatedUser.UserID + "</br></br>" + mapPath;
}
connection.Close();
答案 0 :(得分:0)
查看您的异常我认为您向我们展示的代码不足以理解该问题。
对GenerateHTML
方法的调用以正确的方式启动。在通话中,您拨打IES.Core.ReportTool.BaseGenerateHTMLFromSQL
并在那里获得System.NullReferenceException
。
异常传播到line 37
但不是正确的行号。
检查内部异常