いくつかの背景情報: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()を正常に実行するために必要な変数/オブジェクトは何ですか?