【问题标题】:Error executing child request for ChartImg.axd. This is not a duplicate执行 ChartImg.axd 的子请求时出错。这不是重复的
【发布时间】:2013-04-06 13:31:20
【问题描述】:

我已经尝试了这个线程上的所有解决方案: .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 框架 4.5

【问题讨论】:

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


    【解决方案1】:

    对我有用的解决方案是 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>
    

    【讨论】:

      【解决方案2】:

      我在我们的 Windows 2003 服务器上间歇性地收到此错误。我应用了 Michael 解决方案中的 web.config 代码,但它仍然偶尔会崩溃。我就是这样解决的:

      虽然在 Windows 2003 Server 上进行远程桌面,但我通过 http://localhost/websitename 在本地启动了网站

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

      【讨论】:

        【解决方案3】:

        在根asp:chart标签中使用以下属性

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

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

        【讨论】:

          【解决方案4】:

          这是我的情况:

          • 从 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>
          

          【讨论】:

            【解决方案5】:

            我设法解决了这个问题(我正在使用 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

            【讨论】:

              【解决方案6】:

              致其他任何遇到此问题但无法解决的人。

              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 到 错误的。或者,将应用程序切换到经典模式 应用程序池。例如,从 IIS Express 安装目录中, 运行 appcmd 设置应用程序“默认网站/” /应用程序池:“Clr4ClassicAppPool”。仅当您无法时才这样做 迁移您的应用程序。

              其中一个建议是:

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

              所以我用谷歌搜索,然后我去了这里:

              How to switch IIS Developer Express to "Classic Mode"

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

              不需要使用appcmd,最好在项目的 设置:

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

              现在图表控件可以工作了。如果有人有更好的解决方案(例如我不理解的错误中的其他解决方案建议),请随时对这些建议进行更清晰的描述。

              【讨论】:

                猜你喜欢
                • 2010-11-25
                • 2010-09-23
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2011-03-06
                相关资源
                最近更新 更多