私が聞きたい質問をする前に、私の問題を紹介させてください。
私の会社は、ASP.NET MVC で開発している Web サイトに取り組んでいます。ページの 1 つは有向グラフを示すイメージを表示する必要があります (グラフはMicrosoft.Gleeグラフ ライブラリを使用して作成されます)。グラフを作成するメソッドは次のとおりです。
private bool CreateGraph(XDocument document, string graphPath)
{
try
{
if (document.Descendants("Nodes").Count() == 0)
return false;
Microsoft.Glee.Drawing.Graph graph = new Microsoft.Glee.Drawing.Graph("graph");
string id, parent;
foreach (var node in document.Descendants("Nodes"))
{
id = node.Attribute("Id").Value;
parent = node.Attribute("Parent").Value;
Microsoft.Glee.Drawing.Edge edge = graph.AddEdge(parent, id);
edge.TargetNode.Attr.Shape = Microsoft.Glee.Drawing.Shape.Circle;
edge.SourceNode.Attr.Shape = Microsoft.Glee.Drawing.Shape.Circle;
}
Microsoft.Glee.GraphViewerGdi.GraphRenderer renderer = new Microsoft.Glee.GraphViewerGdi.GraphRenderer(graph);
renderer.CalculateLayout();
Bitmap bitmap = new Bitmap((int)graph.Width, (int)graph.Height, PixelFormat.Format32bppPArgb);
renderer.Render(bitmap);
bitmap.Save(graphPath);
return true;
}
catch
{
throw;
}
}
私はこのコードの最初の作成者ではありません。つまり、このコードは社内の別のプログラマーによって作成されたものなので、コードで行われた決定を正当化することはできません。
とにかく、私が抱えている問題は次のとおりです。ページをローカルでテストすると、画像が正常に作成され、ページに表示されます。ただし、Web サイトをデプロイすると (ホスティングに Windows Azure を使用しています)、次の例外が発生します。
The type initializer for 'Microsoft.Glee.GraphViewerGdi.GViewer' threw an exception.
System.TypeInitializationException: The type initializer for 'Microsoft.Glee.GraphViewerGdi.GViewer' threw an exception. --->
System.ComponentModel.Win32Exception: Error creating window handle.
at System.Windows.Forms.NativeWindow.CreateHandle(CreateParams cp)
at System.Windows.Forms.Control.CreateHandle()
at System.Windows.Forms.Form.CreateHandle()
at System.Windows.Forms.Control.get_Handle()
at System.Windows.Forms.Control.CreateGraphicsInternal()
at System.Windows.Forms.Control.CreateGraphics()
at Microsoft.Glee.GraphViewerGdi.GViewer.GetDotsPerInch()
at Microsoft.Glee.GraphViewerGdi.GViewer..cctor()
--- End of inner exception stack trace ---
at Microsoft.Glee.GraphViewerGdi.GViewer..ctor()
at Microsoft.Glee.GraphViewerGdi.GraphRenderer.CalculateLayout()
これは何らかのメモリの問題だと思いますが、それについてどう思いますか、何が問題の原因である可能性があるか教えていただけますか? Web を検索してもあまり役に立ちませんでした。
前もって感謝します。