一些背景信息:我正在尝试从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页面调用这段代码时,没有问题。同时为Label调用RenderControl()也没问题。
我怀疑在调用Chart对象的RenderControl()函数之前需要初始化一些变量,并且这些变量在从aspx页面调用此函数时自动到位。
我的问题是,RenderControl()需要成功执行哪些变量/对象?