ASP.NET

ASP.NET Chart Controls in einer Hosting-Umgebung einsetzen

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

kick it on dotnet-kicks.de AddThis 0 wikio-Stimme(n) Trackback-Url...

1 Kommentar bislang...

  • Hmm alles schön und gut. Allerdings habe ich einige Problem damit. Ich habe eine Webanwendung mit asp.net geschrieben in den ich Charts einsetze. Nach einem Postback werden die Charts erstellt liegen auch im angegebenen Verzeichnis, werden aber nicht Angezeigt. Die einträge in der web.config habe ich vorgenommen wie oben beschrieben.
    Vieleicht hat ja jemand ne Idee woran es liegt. Fehler ist in allen Browsern. Nutze IIS7. Muss aber auch sagen starte ich die Seite über das Visual Studio werden die Charts angezeigt.
    1
    Chris : Samstag, 16. Januar 2010 21:34

Dein Kommentar hierzu...


Kommentar-Feed für diesen Beitrag
Gravatare werden unterstützt .:. eMail-Adressen werden nicht veröffentlicht
 

RSS-Feed

Die URL des Standard-Newsfeed von zerbit.de lautet:

http://www.zerbit.de/rssfeed.aspx

Login


 

 

Statistik



kürzlich kommentiert

Artikel 289

  • Datum: 27.07.2009
    Kategorie: ASP.NET
    Zugriffe: 3.193
    Kommentare: 1
    Trackbacks: 0

Letzte Beiträge

Kategorien

Buttons & More

Blog-Roll

Banner Piraten-Partei