执行ChartImg.axd的子请求时出错。这不是重复的

时间:2013-04-14 10:42:40

标签: c# asp.net .net visual-studio charts

我在这个帖子上尝试了所有解决方案: .NET 3.5 chart controls exception: Error executing child request for 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>

我已经被困在这两个小时不能得到任何工作。 我正在使用.net framework 4.5

6 个答案:

答案 0 :(得分: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>

答案 1 :(得分:4)

我设法解决了这个问题(我正在使用DotNetNuke,我遇到错误“执行ChartImg.axd的子请求时出错。”)

我将以下行添加到我的web.config文件

<configuration>
  <system.webServer>
    ...
    <handlers>
      ...
      <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>
  <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>

</configuration>

在DotNetNuke中,如果您想在安装过程中从模块更新配置文件,请关注this post

答案 2 :(得分:2)

对于有这个问题的其他人无法修复它。

  1. 我去了这里: http://forums.asp.net/t/1843074.aspx/1

  2. 我将此代码复制并粘贴到web.config文件的相应部分。

                                           

  3. 然后我在运行带有图表控件的页面时收到了来自IIS 8的错误消息:

    HTTP错误500.23 - 内部服务器错误 检测到的ASP.NET设置不适用于集成管理管道模式。

  4. 该消息还包含以下建议:

  5.   

    您可以尝试的事项:将配置迁移到   system.webServer / handlers部分。您可以手动或使用   来自命令行的AppCmd。例如,来自IIS Express   安装目录,运行appcmd migrate config“默认网站/”。   使用AppCmd迁移您的应用程序将使其能够工作   集成模式。它将继续在经典模式下工作   以前的IIS版本。如果您确定可以忽略   此错误,可以通过设置禁用   system.webServer/validation@validateIntegratedModeConfiguration to   假。或者,将应用程序切换到经典模式   应用程序池。例如,从IIS Express安装目录,   运行appcmd set app“默认网站/”   / applicationPool: “Clr4ClassicAppPool”。只有在你不能的时候才这样做   迁移您的应用程序。

    其中一个建议是:

      

    将应用程序切换到经典模式应用程序池。对于   例如,从IIS Express安装目录中运行appcmd set app   “默认网站/”/ applicationPool:“Clr4ClassicAppPool”。只做   如果您无法迁移您的应用程序,请执行此操作。

    所以我谷歌,我去了这里:

    How to switch IIS Developer Express to "Classic Mode"

    改为经典模式的最佳解决方案是:

      

    不需要使用appcmd,最好在项目中更改此项   设置:

         

    单击解决方案资源管理器中的Web项目按F4以获取   要显示的属性页面(不是属性表,但更简单   属性窗口,您可以在其中设置常规内容)查找“托管”   Pipeline Mode',将其更改为'Classic'

    现在Chart控件正常工作。如果有人有更好的解决方案(例如我不理解的错误中的其他解决方案建议),请随时回答更清楚的描述。

答案 3 :(得分:1)

在根asp:chart标记

中使用以下属性
ImageLocation="~/images/temp/ChartPic_#SEQ(300,3)" ImageStorageMode="UseImageLocation"

删除web.config中的所有配置。通过上述更改,您将处理保存图表图像的位置,而不是图表api。

答案 4 :(得分:0)

我在Windows 2003服务器上间歇性地出现此错误。我应用了Michael的解决方案中的web.config代码,但它仍然偶尔会出现问题。这就是我解决它的方法:

虽然在Windows 2003 Server上远程桌面,但我通过http://localhost/websitename

在本地启动了该网站

该网站在本地运作,并在其他任何地方开始正常工作。不知道为什么!

答案 5 :(得分:0)

对我有用的解决方案是发布here

的解决方案
<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>