.NET 3.5图表控制异常:执行ChartImg.axd的子请求时出错

时间:2008-11-19 18:09:48

标签: .net .net-3.5 charts

任何人在使用新的免费图表时都会出现此错误控制从Dundas购买的MS?

“执行ChartImg.axd的子请求时出错”

在MSDN论坛上,他们建议这是我的web.config:  MSDN forum post

到目前为止,还没有解决问题。还有其他想法吗?

12 个答案:

答案 0 :(得分:70)

我遇到了同样的问题:图表可以在一个页面上运行但在下一个页面上不运行。如果在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论坛帖子中写了更详尽的解释。

答案 1 :(得分:14)

我遇到了这个错误,但是通过在我的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" />

答案 2 :(得分:10)

在.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" />

答案 3 :(得分:5)

尝试(不要忘记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>

答案 4 :(得分:5)

另请注意,将图表控件从工具箱拖到页面上时,应该在web.config中创建必要的条目,如果您当时处于设计模式,则只会出现 < / p>

如果您处于源模式并拖放则不会发生。

此外,在设计模式下添加图表控件时,项目/类文件中必须存在某种形式的注册。因为如果你处于源模式并且没有图表控件,你就不会像上面那样获得web.config中的条目。如果您进入设计模式并从工具箱转到页面,您将获得web.config中的条目。

但是,如果然后删除图表,你在设计模式下,它将擦除web.config中的条目(假设单个页面站点),即使你还有另一个图表控件在页面上进入源模式。

所以不,你不是疯了,只是不直观。 ;)

答案 5 :(得分:3)

我发布了一种解决MSDN论坛问题的方法:

嗯,我仍然不知道为什么我得到了例外,但我似乎找到了一个解决方法。我做了一个实验,我把假定的冒犯web.config并将其复制到一个新项目中,我添加了一个新的Web表单和图表控件,并使用“UseHttpHandler”选项将图表控件渲染得很好。这让我相信实际上并不是web.config在我的情况下是问题,所以我回到原始项目并将图表添加到另一个Web表单作为实验,它工作了!更令人惊讶的是,在那之后我进入了违规页面,它也起作用了!然后我从另一页上取下新图表并检查了原始的违规页面,它又被打破了。然后我发现如果我在违规页面之前的任何页面上放置了图表控件,它会起作用,否则它会抛出异常。这些控件非常酷,但我没有遇到问题,找到另一个页面将其放在违规页面的路径上:))

这解决了问题,但如果有人有任何理论我为什么会感兴趣...也许是一个错误?

答案 6 :(得分:1)

有关此内容的更多信息:

我遇到了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属性的用户来说,这可能是个问题。

答案 7 :(得分:0)

只是想指出它也是图像未找到错误的权限问题。

在图片文件夹中设置“允许修改”权限(对于运行网站的帐户,默认为“C:\ TempImageFiles”。

问题消失了。

答案 8 :(得分:0)

请在webconfig中添加

add 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“

由于

Basanth

答案 9 :(得分:0)

在IIS 6.0(Server 2003)中,如果缺少httpHandler,则会发生此错误(请参阅Previous Answer

查看堆栈跟踪,似乎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)中进行了测试

答案 10 :(得分: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"  />

我将应用程序池切换到“集成”模式。图表控件开始正常工作。

答案 11 :(得分:0)

通过在webconfig中添加chatImageHandler解决了此问题。

close()

了解更多详情: http://www.infinetsoft.com/Post/-Solved-Error-executing-child-request-for-ChartImg-axd/1164#.VyenrNJ97cs