有人在使用从 Dundas 购买的新免费图表控件 MS 时遇到此错误吗?
“执行 ChartImg.axd 的子请求时出错”
在 MSDN 论坛上,他们建议这是我的 web.config: MSDN 论坛帖子
到目前为止,这还没有解决问题。还有其他想法吗?
我遇到了同样的问题:图表可以在一页上工作,但不能在下一页上工作。事实证明,如果图表在 POST(即回发)中第一次初始化,则会引发错误,因为处理程序配置不正确。要解决此问题,请通过添加 POST 动词来修改用户 LaptopHeaven 在本主题中提到的 httpHandler 配置:
<add path="ChartImg.axd" verb="GET,HEAD,POST" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false" />
我已经在 Scott Anderson 在本主题的开篇文章中提到的 MSDN 论坛帖子中对为什么会出现此错误进行了更彻底的解释。
我遇到了这个错误,但是通过向我的 web.config 文件的 system.web\httpHandler 部分添加一个元素来纠正它。我添加了以下内容:
<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" />
在 .NET 4.0 上,图表是内置的,但您仍可能需要在下面添加类似的标签:
<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" />
尝试(不要忘记 ChartImageHandler 键中的路径)
<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>
另请注意,虽然将图表控件从工具箱拖到您的页面上应该会在 web.config 中创建必要的条目,但这仅在您当时处于设计模式时才会发生。
如果您处于源模式并拖放,则不会发生。
此外,当您在设计模式下添加图表控件时,项目/类文件中必须存在某种形式的注册。因为如果您处于源代码模式并且 dnd 图表控件,您将不会像上面那样在 web.config 中获得条目。如果您随后进入设计模式并从工具箱 dnd 进入页面,您将获得 web.config 中的条目。
但是,如果然后删除图表,您在设计模式下会删除,它会从 web.config 中擦除条目(假设是单页站点),即使您在页面上仍然拥有其他图表控件源模式。
所以不,你不是疯了,只是不直观。;)
我在 MSDN 论坛上发布了解决此问题的方法:
好吧,我仍然不知道为什么会出现异常,但我似乎找到了解决方法。我做了一个实验,将假定的有问题的 web.config 复制到一个新项目中,在该项目中我添加了一个新的 Web 表单和图表控件,并且图表控件使用“UseHttpHandler”选项渲染得很好。这让我相信实际上并不是 web.config 是我的问题,所以我回到原来的项目,并在另一个 Web 表单中添加了一个图表作为实验,它成功了!更令人惊讶的是,在那之后我去了有问题的页面,它也起作用了!然后我把新图表从另一页上取下来,检查了原来的有问题的页面,它又坏了。然后我发现如果我在违规页面之前的任何页面上放置图表控件,它会起作用,否则它抛出异常。这些控件非常酷,尽管我没有问题地找到另一个页面将其放在违规页面的路径中:)
这解决了问题,但如果有人有任何理论,为什么我会感兴趣......也许是一个错误?
更多信息:
我也遇到了 web.config 问题,并通过确保在将 Chart 控件拖放到页面上时未在代码编辑器中打开 web.config 来解决此问题。如果 web.config 尚未打开,Visual Studio 2010 将进行适当的修改。
成功应用 web.config 问题后,我能够成功克服“执行子请求时出错”错误。
另外关于在 MVC 应用程序中的使用,我正在努力在我的 MVC 2 应用程序(VS2010/.NET 4)中实现它并遇到了另一个问题。
该页面对 ChartImg.axd 的调用导致 HTTP 404 错误。(我使用 Fiddler 找到了这个。)
事实证明,该页面试图从 /MyController/ChartImg.axd 而不是 /ChartImg.axd (从根)访问处理程序。
我可以通过将此行添加到我的 Global.asax.cs 文件来解决问题:
routes.IgnoreRoute("{controller}/{resource}.axd/{*pathInfo}");
对于一些不得不求助于更改 Chart.ImageStorageMode 属性的用户来说,这可能是个问题。
通过在 webconfig 中添加 chatImageHandler 解决了这个问题。
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
<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>
更多详情: http: //www.infinetsoft.com/Post/-Solved-Error-executing-child-request-for-ChartImg-axd/1164#.VyenrNJ97cs
只是想指出,这也是图像未找到错误的权限问题。
在您的图像文件夹上设置“允许修改”权限(默认情况下,对于您的网站运行的帐户,它是“C:\TempImageFiles”。
问题消失。
请在 webconfig 中添加
添加动词="GET,HEAD" path="ChartImg.axd" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
谢谢
巴桑特
在 IIS 6.0 (Server 2003) 中,如果 httpHandler 丢失,则会发生此错误(请参阅上一个答案)
查看堆栈跟踪,似乎 IIS 6.0 假定将加载处理程序。它对语句执行 Execute 并吞下异常。在 IIS 6.0 中的 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"/>
请注意,我将版本从上一个答案更改为 4.0.0.0 并在 Server 2008 (IIS 7.0) 和 Server 2003 (IIS 6.0) 中进行了测试
此问题的另一个原因可能是因为应用程序池设置为“经典”模式。我的处理程序配置正确,但我得到了同样的错误。
<add name="ChartImg" verb="*" path="ChartImg.axd" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
一旦我将应用程序池切换到“集成”模式。图表控件开始正常工作。