Die kostenfreien Microsoft ASP.NET Chart Controls, die zum Teil auf den Dundas-Charts basieren, sollen ja mit der Version 4.0 Einzug
in das .NET-Framework halten. Fein, aber was machen wir bis dahin? Ganz einfach: MSChart.exe herunterladen und installieren...
Das funktioniert allerdings bei einigen Providern nicht, da diese sich (aus verständlichen Gründen) schlicht weigern zusätzliche Software
auf ihren Maschinen zu installieren. Es geht aber auch ohne Installation. Hier eine kleine Anleitung:
Assembly
Zuständig für die Erzeugung der Chart-Bilder ist die System.Web.DataVisualization.dll aus dem kostenfrei herunterladbaren
Installationspaket MSChart.exe.
Wie im .NET-Framework üblich, schreibt das Setup-Paket alle beteiligten DLL's in den Global Assembly Cache. Aus diesem muss man nun erstmal o.g.
Assembly herausfischen. Wie das am einfachsten funktioniert habe ich im Artikel GAC-Viewer unter Windows XP
beschrieben.
Die DLL kopiert man einfach in das bin-Verzeichnis der Web-Anwendung.
web.config
Die Chart-Controls werden über die web.config dem Projekt bekannt gemacht. Dazu werden eingige neue Einträge benötigt:
<compilation debug="true">
<assemblies>
<add assembly="System.Web.DataVisualization,
Version=3.5.0.0, Culture=neutral,
PublicKeyToken=31BF3856AD364E35"/>
...
<pages>
<controls>
<add tagPrefix="asp"
namespace="System.Web.UI.DataVisualization.Charting"
assembly="System.Web.DataVisualization,
Version=3.5.0.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35"/>
...
<httpHandlers>
<add path="ChartImg.axd"
verb="GET,HEAD"
type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler,
System.Web.DataVisualization,
Version=3.5.0.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35"
validate="false"/>
...
<system.webServer>
<handlers>
<add path="ChartImg.axd"
verb="GET,HEAD"
type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler,
System.Web.DataVisualization,
Version=3.5.0.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35"
validate="false"/>
...
Eine der wichtigsten Einstellungen in der web.config ist der physische Pfad, in dem die temporären Chart-Bilder erzeugt werden sollen:
<appSettings>
<add key="ChartImageHandler"
value="storage=file;timeout=20;dir=C:\Projekte\Test\Temp\;"/>
...
Wichtig ist, dass hier wirklich der voll klassifizierte Pfad auf der Platte eingetragen wird und der Worker-Process auf diesen
schreibenden Zugriff erhält. In Hosting-Umgebungen ist man sehr oft über entsprechende Konfigurations-Webs in der Lage einen neuen Ordner zu erzeugen
und ensprechend zu berechtigen, der als TEMP-Verzeichnis herhalten kann.
Allerdings ist nicht immer klar, wie man den physischen Pfad ermitteln soll. Über eine kleine Testseite ist dies jedoch kein Problem:
<%@ Page Language="VB" %>
<html>
<head>
<title>Root-Folder</title>
</head>
<body>
<p><%=Server.MapPath("~/temp")%></p>
</body>
</html>
Im Beispiel habe ich den Temp-Order direkt im Root des Webs erzeugt und den Wert, den die Seite ausgeworfen hat in das value-Attribut des
Settings eingetragen.
Beispiel-Chart
Hier ein Chart aus den WebSamples von Microsoft, zur Veranschaulichung, dass man es auf diese Weise auch beim Provider zum Laufen bekommt:
Links