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>

我已经坚持了两个小时无法让任何工作。我正在使用 .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 回答
6

我设法解决了这个问题(我正在使用 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 中,如果您想在安装过程中从模块更新配置文件,请按照这篇文章

于 2013-09-13T09:53:11.133 回答
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"。

其中一项建议是:

将应用程序切换到经典模式应用程序池。例如,从 IIS Express 安装目录,运行 appcmd set app "Default Web Site/" /applicationPool:"Clr4ClassicAppPool"。仅当您无法迁移应用程序时才执行此操作。

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

如何将 IIS Developer Express 切换到“经典模式”

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

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

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

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

于 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 上进行远程桌面时,我通过以下方式在本地启动了网站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 回答