none
ASPでChartコントロールが表示されない RRS feed

  • 質問

  • 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" />
         

    2017年11月15日 0:04

すべての返信

  • > 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 誤記訂正
    2017年11月15日 1:03
  • ありがとうございました。

    どこでおかしいのか当たりがつきました。

    プロジェクトの直下のaspxファイルであれば、2個ともグラフが表示されるのですが、サブフォルダにaspxファイルを入れるとダメみたいです。

    何か設定が特別なあるのでしょうか?

    ちなみに上記にご返信いただいたサンプルコードはサブフォルダにあるaspxは全滅でした。

    2017年11月20日 0:46
  • 最初の質問の話、

    > グラフの数が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&amp;g=98aaafd5b1154b169e59b67981c70cdb"
        alt="" 
        style="height:300px;width:600px;border-width:0px;" />

    紹介した記事の前者の ASP.NET で Chart が表示される仕組みを読んでもらえましたか? それを読んで、仕組みを理解して、生成される html ソースをチェックする、Fiddler などを使って画像がダウンロードされているかチェックするなどして、切り分けを進めることをお勧めします。

    2017年11月20日 1:54
  • ありがとうございます。

    記事も読んでみました。

    記事のコードもそのままやってみましたが、サブフォルダで「TestFolder」にすると[x]マークになります。

    そのときのソースは同じように下記になってました。

    <img id="Chart1" src="/TestFolder/ChartImg.axd?i=charts_1d6a62e511fa499fb97618b0ac27c495_0.png&amp;g=88cb6978f4534e66b0b38ff3c7a56290"
        alt="" style="height:300px;width:600px;border-width:0px;" />

    2017年11月20日 2:03
  • 補足で、これまで1個は表示されていたものが、今度は1個でも表示されなくなりました。。。

    どのように切り分けたらいいか、わからない状況です。

    2017年11月20日 2:05
  • > どのように切り分けたらいいか、わからない状況です。

    そんなことを言われても、質問者さんの作っているアプリの何がどうなっているか分からない(何か特別なことをしているとか、どこか壊れてしまっているかもしれない)ので、第三者には(少なくともエスパーではない私には)もっと分かりません。

    ゼロから Visual Studio のテンプレートを使って Web アプリのプロジェクトを生成し、Chart のページだけを追加する以外はまっさらな状態に一切手を加えず、それをベースに試してみてはいかが?

    2017年11月20日 2:17