質問者
ASPでChartコントロールが表示されない

質問
-
Visual Studio Express 2015 for webでアプリ開発を行っております。
SQLサーバと連携してグラフ化したいのですが、グラフが”x”マークになり表示できません。
グラフの数が1個であればきちんと表示できるのですが、2個以上になるとすべて"x"マークに切り替わってしまいます。
ネットで対策を検索しましたが、一向に解決策が見つかりませんのでご教授お願いいたします。
デバッグ用のLocalhostとWebサーバの両方で同じことが起こります。
Frameworkのバージョンは4.5.2、
System.Web.DataVisualizationのバージョンは4.0.0
ChartはUseHttpHandlerモードで使用しています。
WebConfigの関係する箇所は下記のとおりです。deleteAfterService=false, PrivateImage=falseの設定もだめでした。
ASPはバージョン4, IISのバージョンは7です。
c:\TempImageFiles\のフォルダにはIIS USERの権限をフルコントロールで付与しております。
<appSettings>
<add key="webpages:Version" value="3.0.0.0" />
<add key="webpages:Enabled" value="false" />
<add key="PreserveLoginUrl" value="true" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
<add key="ChartImageHandler" value="storage=file;timeout=20;dir=c:\TempImageFiles\; " />
</appSettings><httpHandlers>
<add path="ChartImg.axd" verb="GET,HEAD,POST" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false" />
</httpHandlers><controls>
<add tagPrefix="asp" namespace="System.Web.UI.DataVisualization.Charting" assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
<add tagPrefix="ajaxToolkit" assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" />
<add assembly="Microsoft.AspNet.Web.Optimization.WebForms" namespace="Microsoft.AspNet.Web.Optimization.WebForms" tagPrefix="webopt" />
</controls><remove name="ChartImageHandler" />
<add name="ChartImageHandler" preCondition="integratedMode" verb="GET,HEAD,POST" path="ChartImg.axd" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
すべての返信
-
> ASPでChartコントロールが表示されない
ASP ではなく ASP.NET ですね?(ASP と言うとクラシック ASP を想像します)
> グラフの数が1個であればきちんと表示できるのですが、2個以上になるとすべて"x"マークに切り替わってしまいます。であれば、たぶん質問に書いてあるところ(web.config の設定など)の問題ではなく、質問に書いてない部分で問題が出てると思われますが・・・
今提供されている情報では「グラフの数が1個」と「2個以上」の違いが疑わしいように見えますが、具体的にどう違っていて何が影響しているのかは分かりません。
今作っているアプリで、問題を再現するのに必要ないところをどんどん削っていって、問題を切り分けていただけませんか?
その過程で解決策が見つかって自己解決できるかもしれません。自己解決できなくても、問題を再現できる必要最低限まで削ったコード(できればコピペすれば問題を再現できる程度まで削ったコード)をアップしていただければ、回答者の方でも検証できるので進展が期待できると思います。
既にご存知かもしれませんが、ASP.NET で Chart が表示される仕組みを書いた記事をご参考に紹介します。x が表示されるという原因が分かると思います。
Chart
http://surferonwww.info/BlogEngine/post/2010/11/27/Chart.aspxあと、サンプルがありますので、入手して使えるようにすることをお勧めします。
Chart Samples
http://surferonwww.info/BlogEngine/post/2016/02/14/chart-samples.aspx- 編集済み SurferOnWww 2017年11月15日 1:05 誤記訂正
-
最初の質問の話、
> グラフの数が1個であればきちんと表示できるのですが、2個以上になるとすべて"x"マークに切り替わってしまいます。
は間違いで、グラフの数は関係なく、ルート直下に Chart のページを配置した場合は期待通り表示されるが、ルート下にサブフォルダを作ってそれに Chart のページを配置した場合は x マークになるということですか?
> 何か設定が特別なあるのでしょうか?
上記の理解で正しければ、ないはずです。
むしろ、質問者さんがここに書いてある情報からは回答者・閲覧者など第三者が知り得ない「特別なこと」をしているのではないかと思うのですが・・・
念のため、自分の開発マシンの Web Forms アプリで TestFolder というフォルダをルート直下に新たに作って、紹介した記事の前者の記事にあるページをそのフォルダ内にコピペして試してみましたが、期待通り表示されます。
最初、画像をダウンロードするためのハンドラのパスの設定が疑わしいと思ったのですが、生成される html ソースには img 要素の src 属性に以下のように正しいパスが設定されます。
<img id="Chart1" src="/TestFolder/ChartImg.axd?i=charts_1/chart_1_0.png&g=98aaafd5b1154b169e59b67981c70cdb" alt="" style="height:300px;width:600px;border-width:0px;" />
紹介した記事の前者の ASP.NET で Chart が表示される仕組みを読んでもらえましたか? それを読んで、仕組みを理解して、生成される html ソースをチェックする、Fiddler などを使って画像がダウンロードされているかチェックするなどして、切り分けを進めることをお勧めします。
-
ありがとうございます。
記事も読んでみました。
記事のコードもそのままやってみましたが、サブフォルダで「TestFolder」にすると[x]マークになります。
そのときのソースは同じように下記になってました。
<img id="Chart1" src="/TestFolder/ChartImg.axd?i=charts_1d6a62e511fa499fb97618b0ac27c495_0.png&g=88cb6978f4534e66b0b38ff3c7a56290"
alt="" style="height:300px;width:600px;border-width:0px;" />