メニュー

プログラミング

ソフトウェア

自宅コンピュータ関連

その他



自分サイトリンク


外部サイトへのリンク




カウンター




Twitter


現在時刻

ASP.NETによる「Microsoft Chart Controls」のメモ

Microsoft純正?のグラフコントロールの「Microsoft Chart Controls」の中のASP.NET版についてのメモです。

「Microsoft Chart Controls」のダウンロード

使用するには、「Microsoft .NET Framework 3.5 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 の子の要求を実行中にエラーが発生しました。
というエラーが発生してします。
これを解決するにはWeb.configファイルに、
httpHandlers 」要素がある。
最初は、このようになっていると思われる。(一部抜粋)
  1. <?xml version="1.0"?>
  2. <configuration>
  3. <system.web>
  4. <httpHandlers>
  5. <remove verb="*" path="*.asmx"/>
  6. <add verb="*" path="*.asmx" validate="false"
  7.     type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
  8. <add verb="*" path="*_AppService.axd" validate="false"
  9. type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
  10. <add verb="GET,HEAD" path="ScriptResource.axd"
  11. type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/>
  12. </httpHandlers>
  13. <system.web>
  14. </configuration>
  15.  
を下記のように変更すればよい。
  1. <?xml version="1.0"?>
  2. <configuration>
  3. <system.web>
  4. <httpHandlers>
  5. <remove verb="*" path="*.asmx"/>
  6. <add verb="*" path="*.asmx" validate="false"
  7. type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
  8. <add verb="*" path="*_AppService.axd" validate="false"
  9. type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
  10. <add verb="GET,HEAD" path="ScriptResource.axd"
  11. type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/>
  12.    <add path="ChartImg.axd" verb="GET,HEAD"
  13. type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false" />
  14. </httpHandlers>
  15. <system.web>
  16. </configuration>
  17.  
(私の環境では盛大にはみ出して自動改行してくれないみたい。CSSカスタマイズをして回避。)
ようは、
<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にも追加されているみたいです。
これで無事に使えるようになりました。

  • 2009/01/08 16:17追記
上記のままではまだうまくゆかない場合がありました。
例えば作成したWebアプリをサーバーにアップしたりするとだめみたいです。
Web.configのところに、、
<appSettings>
  <add key="ChartImageHandler" value="Storage=file;Timeout=20;dir=C:\TempImages\;" />
</appSettings>
 
が含まれていていると、「C:\TempImages\」が見つかりませんといわれると思います。
ディレクトリを作ってもいいのですが、
Web.configのディレクトリを変更するか、Webアプリごとのフォルダにして、
<appSettings>
  <add key="ChartImageHandler" value="Storage=file;Timeout=20;Url=~/TempImages/;" />
</appSettings>
 
と設定すると、Web.configのあるルートフォルダからのパスが設定できます。
ダウンロードできるサンプルではこのようになっています。
さらに、チャートコントロールの「ImageLocation」プロパティが「~/TempImages/ChartPic_#SEQ(300,3)」に
なっていて変更するといいのかなぁっと思ったりします。
ついでに、ChartPic以降はそのままで。
まだまだ、わからないことだらけです。

  • 2009/03/02 05:04追記
サーバーをIIS7.0で実行してみたなんと例外発生してしまいました。
要求の種類 'POST' の http ハンドラが見つかりませんでした。 
説明: 現在の Web 要求を実行中に、ハンドルされていない例外が発生しました。
      エラーに関する詳細および例外の発生場所については、 スタック トレースを参照してください。 
例外の詳細: System.Web.HttpException: 要求の種類 'POST' の http ハンドラが見つかりませんでした。
らしいです。
web.configファイルを変更すれば例外は発生しなくなった。
最初はこのようになっていると思われる。(一部抜粋)
  1. <?xml version="1.0"?>
  2. <configuration>
  3. <system.webServer>
  4. <handlers>
  5. <remove name="WebServiceHandlerFactory-Integrated" />
  6. <remove name="ScriptHandlerFactory" />
  7. <remove name="ScriptHandlerFactoryAppServices" />
  8. <remove name="ScriptResource" />
  9. <remove name="ChartImageHandler" />
  10. <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode"
  11. type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
  12. <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd"
  13. preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
  14. <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD"
  15. path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
  16. <add name="ChartImageHandler" preCondition="integratedMode" verb="GET,HEAD"
  17. path="ChartImg.axd" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
  18. </handlers>
  19. <system.webServer>
  20. </configuration>
  21.  
を下記のように変更すればよい。
  1. <?xml version="1.0"?>
  2. <configuration>
  3. <system.webServer>
  4. <handlers>
  5. <remove name="WebServiceHandlerFactory-Integrated" />
  6. <remove name="ScriptHandlerFactory" />
  7. <remove name="ScriptHandlerFactoryAppServices" />
  8. <remove name="ScriptResource" />
  9. <remove name="ChartImageHandler" />
  10. <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode"
  11. type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
  12. <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd"
  13. preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
  14. <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD"
  15. path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
  16. <add name="ChartImageHandler" preCondition="integratedMode" verb="GET,HEAD,POST"
  17. path="ChartImg.axd" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
  18. </handlers>
  19. <system.webServer>
  20. </configuration>
  21.  
ようは、
<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なのでは?
system.webServer セクションは、Internet Information Services 7.0 で ASP.NET AJAX を
実行するために必要です。以前のバージョンの IIS では不要です。
のコメント行よりも後ろにあるので。


選択肢 投票
役にたった。 (71)
あんまり役に立たなかった。 (2)
まるでだめ。 (3)






| 新しいページ | 編集 | 差分 | 編集履歴 | ページ名変更 | アップロード | 検索 | ページ一覧 | タグ | RSS | ご利用ガイド | 管理者に問合せ |
@wiki - 無料レンタルウィキサービス | プライバシーポリシー | トラックバック