.NET 3.5图表控件exception:执行ChartImg.axd的子请求时出错
使用新的免费图表控件从邓达斯购买MS的任何人得到这个错误?
“执行ChartImg.axd的子请求时出错”
在MSDN论坛上,他们build议这是我的web.config: MSDN论坛post
到目前为止,还没有解决问题。 任何其他的想法?
我遇到了同样的问题:图表只能在一个页面上工作,而不能在下一个页面上工作。 如果图表在POST中第一次被初始化(即,回发),则错误被抛出,因为处理程序configuration不正确。 要解决这个问题,请通过添加POST动词来修改用户LaptopHeaven在本主题中提到的httpHandlerconfiguration:
<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" />
我已经写了一个更全面的解释,为什么这个错误发生在斯科特·安德森在这个主题的开幕文章中提到的MSDN论坛post。
我遇到了这个错误,但通过添加一个元素到我的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键中的path)
<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中创build必要的条目,但这只有在您处于devise模式时才会发生。
如果你在源模式下拖放它不会发生。
此外,在devise模式中添加图表控件时,必须在项目/类文件中进行某种forms的注册。 因为如果你在源代码模式和图表控制你不会得到在web.config中的条目,如上所述。 如果您进入devise模式,并从工具箱进入页面,您将在web.config中获取条目。
但是,如果删除图表,那么在devise模式下,即使从入门点到页面仍然有页面上的其他图表控件,它会从web.config(假设是单个页面网站)擦除条目源模式。
所以不,你不是疯了,这只是不直观。 ;)
我发布了一个方法,我在MSDN论坛上解决了这个问题:
那么我仍然不知道为什么我得到例外,但我似乎find了一个解决方法。 我做了一个实验,我采取了应该得罪的web.config,并将其复制到一个新的项目,我添加了一个新的Web窗体和图表控件和图表控件与“UseHttpHandler”选项罚款。 这导致我相信,这实际上不是web.config,这是我的情况的问题,所以我回到原来的项目,并添加一个图表到另一个Web窗体作为一个实验,它的工作! 更令人惊讶的是,之后我去了冒犯的页面,它也起作用了! 然后,我从另一页上拿下了新的图表,并检查了原来的违规页面,并再次破坏。 然后,我发现如果我把图表控件放在违规页面之前的任何页面上,它将工作,否则抛出exception。 这些控件是如此酷,虽然我没有find另一个页面,把一个在冒犯的页面的path的问题:)
这解决了这个问题,但如果有人有任何理由,我会感兴趣…也许是一个错误?
更多信息:
我在web.config问题上遇到了问题,并通过确保在代码编辑器中未打开web.config时将图表控件拖放到页面上来解决此问题。 如果web.config尚未打开,Visual Studio 2010将进行适当的修改。
成功应用web.config问题后,我能够成功地通过“错误执行子请求”错误。
另外关于在MVC应用程序中的使用,我正在努力在我的MVC 2应用程序(VS2010 / .NET 4)中实现这一点,并遇到了另一个问题。
页面调用ChartImg.axd导致HTTP 404错误。 (我用小提琴find了。)
原来页面试图从/MyController/ChartImg.axd而不是/ChartImg.axd(从根目录)访问处理程序。
我能够通过将此行添加到我的Global.asax.cs文件来解决此问题:
routes.IgnoreRoute("{controller}/{resource}.axd/{*pathInfo}");
这可能是一些用户不得不改变Chart.ImageStorageMode属性的问题。
只是想指出,这也是一个图像未发现错误的权限问题。
设置图像文件夹的“允许修改”权限(默认为“C:\ TempImageFiles”为您的网站运行的帐户。
问题消失。
请将其添加到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
在IIS 6.0(Server 2003)中,如果缺lesshttpHandler,则会发生此错误(请参阅上一个答案 )
查看堆栈跟踪,看起来IIS 6.0假定将加载一个处理程序。 它在语句上执行了一个Execute,并且exception被吞下。 在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)中进行了testing。
此问题的另一个原因可能是因为应用程序池设置为“经典”模式。 我的处理程序configuration正确,但我得到相同的错误。
<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" />
只要我将应用程序池切换到“集成”模式。 图表控件开始正常工作。
通过在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