6

このスレッドですべての解決策を試しました: .NET 3.5 チャート コントロールの例外: ChartImg.axd の子要求の実行中にエラーが発生しました

私は追加しました

<add
    path="ChartImg.axd" 
    verb="GET,HEAD" 
    type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
    validate="false" />

セクションにコードを追加しましたhttpHandlersが、それでも機能しません。

私も追加しました:

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

<httpHandlers>
...
    <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>

<handlers>
...
    <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>

しかし、これらのタグを構成ファイルの正しい場所に配置するためにしばらく戦った後、同じエラーが発生します。

現在、私の設定ファイルは次のとおりです。

<?xml version="1.0"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>

  <appSettings>
    <add key="ChartImageHandler" value="storage=file;timeout=20;dir=c:\TempImageFiles\;" />
  </appSettings>
  <system.web>
    <httpHandlers>

      <add path="ChartImg.axd" verb="GET,HEAD" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false" />

    </httpHandlers>

    <!--<pages>
      <controls>
        <add tagPrefix="artem" namespace="Artem.Google.UI" assembly="Artem.Google"/>
      </controls>
    </pages>-->
    <compilation debug="true" targetFramework="4.5">

      <assemblies> 
        <add assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>  

      </assemblies>

    </compilation>

    <httpRuntime targetFramework="4.5"/>
  </system.web>
  <system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
  </system.webServer>
</configuration>

私はこれに2時間立ち往生しており、何も機能しません。.net フレームワーク 4.5 を使用しています

4

6 に答える 6

7

これが私の状況でした:

  • 3.5から4.0にアップグレード
  • 私のマシン(64ビットWin7)でローカルにコンパイルすると機能しました
  • Win2003 サーバーに公開すると機能しませんでした

私は単にこれを見逃していました:

<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>
于 2013-10-22T20:18:28.780 に答える
2

この問題を解決できない他の人に。

  1. ここに行きました: http://forums.asp.net/t/1843074.aspx/1

  2. このコードをコピーして、web.config ファイルの適切なセクションに貼り付けました。

  3. 次に、チャート コントロールを使用してページを実行すると、IIS 8 から次のエラー メッセージが表示されました。

    HTTP エラー 500.23 - 内部サーバー エラー 統合マネージド パイプライン モードに適用されない ASP.NET 設定が検出されました。

  4. メッセージには提案も含まれています。

試すことができること: 構成を system.webServer/handlers セクションに移行します。これは、手動で行うか、コマンド ラインから AppCmd を使用して行うことができます。たとえば、IIS Express インストール ディレクトリから、appcmd migrate config "Default Web Site/" を実行します。AppCmd を使用してアプリケーションを移行すると、統合モードで動作できるようになります。クラシック モードおよび以前のバージョンの IIS では引き続き動作します。このエラーを無視しても問題ないことが確実な場合は、system.webServer/validation@validateIntegratedModeConfiguration を false に設定して無効にすることができます。または、アプリケーションをクラシック モードのアプリケーション プールに切り替えます。たとえば、IIS Express インストール ディレクトリから appcmd set app "Default Web Site/" /applicationPool:"Clr4ClassicAppPool" を実行します。

提案の 1 つは、次のことでした。

アプリケーションをクラシック モードのアプリケーション プールに切り替えます。たとえば、IIS Express インストール ディレクトリから appcmd set app "Default Web Site/" /applicationPool:"Clr4ClassicAppPool" を実行します。これは、アプリケーションを移行できない場合にのみ行ってください。

だから私はそれをグーグルして、ここに行きました:

IIS Developer Express を「クラシック モード」に切り替える方法

クラシック モードに変更するための最善の解決策は次のとおりです。

appcmd を使用する必要はありません。プロジェクトの設定でこれを変更することをお勧めします。

ソリューション エクスプローラーで Web プロジェクトをクリックします。F4 キーを押して、プロパティ ページを表示します (プロパティ シートではなく、一般的な設定を行う単純なプロパティ ウィンドウです)。「マネージド パイプライン モード」を探し、これを「クラシック」に変更します。 '

Chart コントロールが動作するようになりました。誰かがより良い解決策を持っている場合 (たとえば、私が理解できないエラーの他の解決策の提案)、それらの提案のより明確な説明で自由に答えてください。

于 2013-04-18T13:41:00.050 に答える
1

ルート asp:chart タグで次の属性を使用します。

ImageLocation="~/images/temp/ChartPic_#SEQ(300,3)" ImageStorageMode="UseImageLocation"

web.config のすべての構成を削除します。上記の変更により、チャート API ではなく、チャート画像を保存する場所を処理します。

于 2014-03-09T18:24:36.693 に答える
0

Windows 2003 サーバーで断続的にこのエラーが発生します。Michael のソリューションから web.config コードを適用しましたが、それでも時々失敗します。これは私がそれを修正する方法です:

Windows 2003 Server でリモート デスクトップを使用しているときに、ローカルで Web サイトを立ち上げました。http://localhost/websitename

サイトはローカルで機能し、他の場所でも正常に機能し始めます。理由がわからない!

于 2014-09-22T08:00:28.847 に答える
0

私のために働いていた解決策は、ここに投稿されたものです

<system.web>
//comment this in local IIS7, on host uncomment
<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>
    <modules runAllManagedModulesForAllRequests="true" />
    <handlers>
      <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" />
    </handlers>
  </system.webServer>

さらに、これをappSettingsに追加する必要がありました

<appSettings>
<add key="ChartImageHandler" value="storage=file;timeout=20;dir=c:\Temp\;" />
</appSettings>
于 2016-01-29T11:46:14.467 に答える