我在这个帖子上尝试了所有解决方案: .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
答案 0 :(得分:7)
以下是我的情况:
我只是错过了这个:
<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)
对于有这个问题的其他人无法修复它。
我将此代码复制并粘贴到web.config文件的相应部分。
然后我在运行带有图表控件的页面时收到了来自IIS 8的错误消息:
HTTP错误500.23 - 内部服务器错误 检测到的ASP.NET设置不适用于集成管理管道模式。
该消息还包含以下建议:
您可以尝试的事项:将配置迁移到 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>