none
ChartImg.axd の子の要求を実行中にエラーが発生しました。 RRS feed

  • 質問

  • チャートコントロールを使用してWebページをデバッグしようとしたところ
    下記のエラーとなりました

    System.Web.HttpException が発生しました
     HResult=0x80004005
     Message=ChartImg.axd の子の要求を実行中にエラーが発生しました。

    ネットで検索して書かれてある対策をしてみたのですが、解決に至っておりません
    以下、Web.configの抜粋です

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>

      ・・・

      <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=/temp/;" />
      </appSettings>

      ・・・

      <system.web>
        <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>

      ・・・

      </system.web>
      <system.webServer>

      ・・・

        <handlers>
          <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
          <remove name="OPTIONSVerbHandler" />
          <remove name="TRACEVerbHandler" />
          <remove name="ChartImageHandler" />
          <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
          <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" />
        </handlers>
        <validation validateIntegratedModeConfiguration="false" />
      </system.webServer>

      ・・・

    </configuration>


    開発環境は以下の通りです
    ===============================================

    OS 名 Microsoft Windows 7 Professional
    バージョン 6.1.7601 Service Pack 1 ビルド 7601
    システムの種類 x64-ベース PC

    Microsoft Visual Studio Professional 2017 Preview
    Version 15.3 (26510.0-Preview) Preview
    VisualStudio.15.Preview/15.3.0-Preview+26510.0
    Microsoft .NET Framework
    Version 4.7.02053

    インストールされているバージョン:Professional

    Visual C# 2017   00369-60000-00001-AA819
    Microsoft Visual C# 2017

    ASP.NET and Web Tools 2017   15.0.30504.0
    ASP.NET and Web Tools 2017

    ASP.NET Core Razor Language Services   1.0
    Provides languages services for ASP.NET Core Razor.

    ASP.NET Template Engine 2017   15.0.30504.0
    ASP.NET Template Engine 2017

    ASP.NET Web Frameworks and Tools 2017   5.2.50421.0
    For additional information, visit https://www.asp.net/
    ===============================================

    よろしくお願いします

    2017年7月4日 5:10

すべての返信

  • > <add key="ChartImageHandler" value="storage=file;timeout=20;dir=/temp/;" />

    ざっと見た限りですが、上記の dir(一時的に画像ファイルを保存するホルダ)の設定が間違っているのではないですか?

    Visual Studio で Chart コントロールを ASP.NET ページにドラッグ&ドロップすると、web.config にデフォルトでは dir=c:\TempImageFiles\; と設定されるはずですが、意図的に変えました?

    パラメーター dir は、storage=file の場合の、イメージ保存場所の絶対ディレクトリパス(デフォルトの設定では c:\TempImageFiles)になります。

    アプリケーションルート直下の temp フォルダを指定するなら、dir の代わりに url というパラメータを使って、url=~/temp/ のようにしてみてください。(ルート演算子 ~ に注意)

    Chart が表示される仕組み、web.config の設定など詳しくは以下の記事が参考になると思います。

    Chart
    http://surferonwww.info/BlogEngine/post/2010/11/27/Chart.aspx

    あと、IIS 上で動かす場合は IIS のワーカープロセスが、一時的に画像ファイルを保存するホルダに対して、書き込み読み取り権限を持っている必要があります。


    #開発マシンで、Visual Studio を管理者権限で立ち上げて、Web アプリを IIS Express を使って動かしている場合は、ワーカープロセスは管理者権限を持ちますので問題ないはずです。開発マシンでは動いても IIS にデプロイすると動かないというのは大体がワーカープロセスのアクセス権の問題です。




    2017年7月4日 7:00
  • お世話になります

    Web.configを初期状態

     <add key="ChartImageHandler" value="storage=file;timeout=20;dir=C:\TempImageFiles\;" />

    に戻し、フォルダの作成とIISユーザー権限の付与、VSを管理者権限で実行しましたが

    現象は変わりませんでした。


    追記:

     別プロジェクトを作成してデフォルトページにチャートコントロールを追加し実行したところ

     正常に起動、表示されました。

     プロジェクト固有の問題と思われますが、ログイン機能のDBをSQLServerからPostgreSQLに

     マイグレーションしたのですが、関係あるでしょうか?

    2017年7月4日 8:13
  • > フォルダの作成とIISユーザー権限の付与、VSを管理者権限で実行しましたが

    IIS と IIS Express の違い、ワーカープロセスとは何か、IIS Express のワーカープロセスのアカウントは何か、IIS のワーカープロセスのアカウントは何か、どのアカウントにどのようなアクセス権を与えるか等々については十分な知識をお持ちですか?

    十分な知識をお持ちで、一時ファイルの保管場所の指定とそこへのワーカープロセスのアクセス権の設定を間違いなくされていると理解していいですか?

    そういうことであれば、今提供されている情報では自分にはエラーの原因は分かりません。

    もし、そのあたりに自信がないとか、あちこち設定を変えてデフォルトからどう変わっているか不明ということであれば、まっさらなプロジェクトを新たに作って、ツールボックスから Chart をドラッグ&ドロップし(=デフォルトでの設定になります)、私が紹介した @IT の記事のサンプルを作ってみてください。

    そして、開発マシンの全てのフォルダにフルコントロールを持つ管理者権限で Visual Studio を立ち上げて、作成した Chart のページを IIS Express 上で実行してみてはいかがでしょう。

    少なくとも設定とアクセス権の問題はそれでクリアできるはずです。Chart のコードも @IT の記事の通りに作れていれば(ただし、クエリに N プレフィックスを追加する必要がある点には注意)問題ないはずです。

    もし、それでも問題がでるのであれば、設定、アクセス権、コードの書き方以外(質問者さんの開発マシンの固有の問題・・・ファイルが壊れているとか?)が疑わしいということになると思います。

    2017年7月4日 8:54
  • ご返信ありがとうございます

    ちなみに参考に提示してもらいましたURLは社内フィルターに引っかかり閲覧できません。

    念のためスタックトレースを開示します。

    [InvalidOperationException: Stack が空です。]
       System.ThrowHelper.ThrowInvalidOperationException(ExceptionResource resource) +52
       System.Collections.Generic.Stack`1.Pop() +6884749
       Microsoft.VisualStudio.Web.PageInspector.Runtime.WebForms.SelectionMappingRenderTraceListener.EndRendering(TextWriter writer, Object renderedObject) +85
       System.Web.UI.RenderTraceListenerList.EndRendering(TextWriter writer, Object renderedObject) +66
       System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +170
       System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +100
       System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +25
       System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1303

    2017年7月4日 9:22
  • プロジェクトを作成しなおしてチャートコントロールを追加し、正常にチャートコントロールが表示されることを確認。

    そのあと、SQLServer→PostgreSQLのマイグレーションの実行後、画面起動によりチャートコントロールが表示されることを確認できました。

    これよりマイグレーションが原因ではなく他の何らかの要因によりプロジェクトが壊れたものと想定します。

    VS2017のバグではないかと思われますが管理人の方、いかがでしょうか?


    2017年7月4日 10:18
  • > プロジェクト固有の問題と思われますが、ログイン機能のDBをSQLServerからPostgreSQLに
    > マイグレーションしたのですが、関係あるでしょうか?

    質問者さんがどういうログイン機能をつくって、その後どこをどういじったか知る由もない第三者には分かるはずがないと思います。少なくとも自分にはわかりません。


    > ちなみに参考に提示してもらいましたURLは社内フィルターに引っかかり閲覧できません。

    では自宅で閲覧してください。

    ・・・というか、最初に私のレスを見たときにそう言っていただければと思います。こっちは読んでいるものと理解して話を進めますので、話が噛み合わなくなってしまいます。


    >  念のためスタックトレースを開示します。

    それは何ですか? 最初の質問での例外「System.Web.HttpException が発生しました」とは違いますよね? 何の意味があるのでしょう?


    > VS2017のバグではないかと思われますが管理人の方、いかがでしょうか?

    他人のせいにしたくなる気持ちは分かりますが、もう少し謙虚に、自分のやり方の問題ではないかと考えて原因を追究することをお勧めします。

    「管理人の方」というのはどういう人を期待しているのか分かりませんが、ここには「バグではないか」という質問に答えられる人はいません。


    2017年7月4日 10:25
  • よしだ おきゃぷ さん、こんにちは
    フォーラム オペレーターの立花楓です。

    当フォーラムは、フォーラム オペレーターが管理しておりますが、ユーザー同士が経験を基に情報交換を行う場となっております。
    また、質問によっては「回答がつかない」、「つくのに時間がかかる」、「記載された情報が古かった」、「自分の環境にはあわなかった」という場合があり得ることをご了承いただけますと幸いです。

    フォーラムでご質問頂くにあたっての注意点
    https://social.technet.microsoft.com/Forums/ja-JP/ca9ecfb7-4407-4fcb-b8bd-207d68257e68?forum=announceja

    よろしくお願いします。


    MSDN/TechNet Community Support 立花楓

    2017年7月5日 1:21
    モデレータ