みみたんのメモWiki
プログラミング/CSharp/ASP.NET/Microsoft Chart Controls
最終更新:
匿名ユーザー
-
view
ASP.NETによる「Microsoft Chart Controls」のメモ
Microsoft純正?のグラフコントロールの「Microsoft Chart Controls」の中のASP.NET版についてのメモです。
「Microsoft Chart Controls」のダウンロード
使用するには、「Microsoft .NET Framework 3.5 SP1」が必須みたい。
さらに、VS2008のアドオンにはSP1を入れなきゃだめらしい。
さらに、VS2008のアドオンにはSP1を入れなきゃだめらしい。
- Microsoft Chart Controlsの本体
- Microsoft Visual Studio 2008 SP1で使用するためのアドオン(英語のみ)
- サンプル(ASP.NET版と、Windowsフォーム版)(英語のみ)
- ドキュメント(英語のみ)
- 言語パック(インテリジェンスなどが日本語化される)
使用方法(VSでのデザインで。)
いつもの通りWebアプリケーションを作成してから、ツールボックスの「Data」か「データ」のところに「Chart」と
いうコントロールが追加されているはず。それを他のコントロールと同じように配置すればよい。
実に簡単だが、これで実行するとなぜか、
いうコントロールが追加されているはず。それを他のコントロールと同じように配置すればよい。
実に簡単だが、これで実行するとなぜか、
ChartImg.axd の子の要求を実行中にエラーが発生しました。 説明: 現在の Web 要求を実行中に、ハンドルされていない例外が発生しました。 エラーに関する詳細および例外の発生場所については、スタック トレースを参照してください。 例外の詳細: System.Web.HttpException: ChartImg.axd の子の要求を実行中にエラーが発生しました。
<?xml version="1.0"?>
<configuration>
<system.web>
<httpHandlers>
<remove verb="*" path="*.asmx"/>
<add verb="*" path="*.asmx" validate="false"
type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add verb="*" path="*_AppService.axd" validate="false"
type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add verb="GET,HEAD" path="ScriptResource.axd"
type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/>
</httpHandlers>
<system.web>
</configuration>
を下記のように変更すればよい。
<?xml version="1.0"?>
<configuration>
<system.web>
<httpHandlers>
<remove verb="*" path="*.asmx"/>
<add verb="*" path="*.asmx" validate="false"
type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add verb="*" path="*_AppService.axd" validate="false"
type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add verb="GET,HEAD" path="ScriptResource.axd"
type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/>
<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" />
</httpHandlers>
<system.web>
</configuration>
ようは、
<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" />
を追加しただけです。
ちなみに、ポストバックなどの機能を使用する場合は、
ちなみに、ポストバックなどの機能を使用する場合は、
<add path="ChartImg.axd" verb="GET,HEAD,POST" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false" />
にしなきゃだめみたいです。(POSTメソッドを入れただけ。)
私は、これを探すのに手間取ってしまいました。
参照URLは、 こちら(英語) です。
サンプルのWeb.configにも追加されているみたいです。
これで無事に使えるようになりました。
私は、これを探すのに手間取ってしまいました。
参照URLは、 こちら(英語) です。
サンプルのWeb.configにも追加されているみたいです。
これで無事に使えるようになりました。
- 2009/01/08 16:17追記
上記のままではまだうまくゆかない場合がありました。
例えば作成したWebアプリをサーバーにアップしたりするとだめみたいです。
Web.configのところに、、
例えば作成したWebアプリをサーバーにアップしたりするとだめみたいです。
Web.configのところに、、
<appSettings>
<add key="ChartImageHandler" value="Storage=file;Timeout=20;dir=C:\TempImages\;" />
</appSettings>
が含まれていていると、「C:\TempImages\」が見つかりませんといわれると思います。
ディレクトリを作ってもいいのですが、
Web.configのディレクトリを変更するか、Webアプリごとのフォルダにして、
ディレクトリを作ってもいいのですが、
Web.configのディレクトリを変更するか、Webアプリごとのフォルダにして、
<appSettings>
<add key="ChartImageHandler" value="Storage=file;Timeout=20;Url=~/TempImages/;" />
</appSettings>
と設定すると、Web.configのあるルートフォルダからのパスが設定できます。
ダウンロードできるサンプルではこのようになっています。
さらに、チャートコントロールの「ImageLocation」プロパティが「~/TempImages/ChartPic_#SEQ(300,3)」に
なっていて変更するといいのかなぁっと思ったりします。
ついでに、ChartPic以降はそのままで。
まだまだ、わからないことだらけです。
ダウンロードできるサンプルではこのようになっています。
さらに、チャートコントロールの「ImageLocation」プロパティが「~/TempImages/ChartPic_#SEQ(300,3)」に
なっていて変更するといいのかなぁっと思ったりします。
ついでに、ChartPic以降はそのままで。
まだまだ、わからないことだらけです。
- 2009/03/02 05:04追記
サーバーをIIS7.0で実行してみたなんと例外発生してしまいました。
要求の種類 'POST' の http ハンドラが見つかりませんでした。 説明: 現在の Web 要求を実行中に、ハンドルされていない例外が発生しました。 エラーに関する詳細および例外の発生場所については、 スタック トレースを参照してください。 例外の詳細: System.Web.HttpException: 要求の種類 'POST' の http ハンドラが見つかりませんでした。
らしいです。
web.configファイルを変更すれば例外は発生しなくなった。
最初はこのようになっていると思われる。(一部抜粋)
web.configファイルを変更すれば例外は発生しなくなった。
最初はこのようになっていると思われる。(一部抜粋)
<?xml version="1.0"?>
<configuration>
<system.webServer>
<handlers>
<remove name="WebServiceHandlerFactory-Integrated" />
<remove name="ScriptHandlerFactory" />
<remove name="ScriptHandlerFactoryAppServices" />
<remove name="ScriptResource" />
<remove name="ChartImageHandler" />
<add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode"
type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd"
preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD"
path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add name="ChartImageHandler" preCondition="integratedMode" verb="GET,HEAD"
path="ChartImg.axd" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</handlers>
<system.webServer>
</configuration>
を下記のように変更すればよい。
<?xml version="1.0"?>
<configuration>
<system.webServer>
<handlers>
<remove name="WebServiceHandlerFactory-Integrated" />
<remove name="ScriptHandlerFactory" />
<remove name="ScriptHandlerFactoryAppServices" />
<remove name="ScriptResource" />
<remove name="ChartImageHandler" />
<add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode"
type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd"
preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD"
path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add name="ChartImageHandler" preCondition="integratedMode" verb="GET,HEAD,POST"
path="ChartImg.axd" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</handlers>
<system.webServer>
</configuration>
ようは、
<add name="ChartImageHandler" preCondition="integratedMode" verb="GET,HEAD"
path="ChartImg.axd" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
に
<add name="ChartImageHandler" preCondition="integratedMode" verb="GET,HEAD,POST"
path="ChartImg.axd" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
を追加しただけです。
多分やらなきゃいけない理由は一番最初に書いたweb.configを編集するのと同じでしょう。
しかも多分IIS7.0だけでOKなのでは?
多分やらなきゃいけない理由は一番最初に書いたweb.configを編集するのと同じでしょう。
しかも多分IIS7.0だけでOKなのでは?
system.webServer セクションは、Internet Information Services 7.0 で ASP.NET AJAX を 実行するために必要です。以前のバージョンの IIS では不要です。
のコメント行よりも後ろにあるので。