一些背景信息:我正在尝试从运行在 ASP.NET 服务器上的线程(在 Appication_Start 中开始)发送包含许多图表的 HTML 电子邮件。
在最简单的形式中,我有以下代码,从服务器上运行的线程调用:
StringBuilder sb = new StringBuilder();
StringWriter tw = new StringWriter(sb);
HtmlTextWriter hw = new HtmlTextWriter(tw);
Chart c = new Chart();
c.RenderControl(hw); <-- NullReferenceException
调试信息:
StackTrace:
at System.Web.UI.DataVisualization.Charting.ChartHttpHandler.GetHandlerUrl()
at System.Web.UI.DataVisualization.Charting.ChartHttpHandler.GetUrl(String query, String fileKey, String currentGuid)
at System.Web.UI.DataVisualization.Charting.ChartHttpHandler.GetChartImageUrl(MemoryStream stream, String imageExt)
...
当我从任何 aspx 页面调用这段代码时,没有问题。同样为标签调用 RenderControl() 也没问题。
我怀疑在调用 Chart 对象的 RenderControl() 函数之前需要初始化一些变量,并且当从 aspx 页面调用此函数时,这些变量会自动到位。
那么我的问题是,RenderControl() 需要哪些变量/对象才能成功执行?