ASP.NET图表控件在生产服务器上不工作

ASP.NET图表控件在生产服务器上不工作,asp.net,mschart,Asp.net,Mschart,我有一个严重依赖图表的应用程序,目前这些图表将在ASP.Net开发服务器中工作,但当我尝试发布到我的服务器(Win 2008 Server R2,IIS 7)时,图表不会显示 使用Firebug,我可以看到对ChartImg.axd的调用返回404,而我得到的只是IE中的一个空白图像保持器,或者Firefox中什么都没有。到目前为止,我已经搜索了大约3到4个小时,并尝试了所有推荐的方法,但似乎没有任何效果 我想使用memory/HttpImageHandler,而不是ImageLocation配

我有一个严重依赖图表的应用程序,目前这些图表将在ASP.Net开发服务器中工作,但当我尝试发布到我的服务器(Win 2008 Server R2,IIS 7)时,图表不会显示

使用Firebug,我可以看到对ChartImg.axd的调用返回404,而我得到的只是IE中的一个空白图像保持器,或者Firefox中什么都没有。到目前为止,我已经搜索了大约3到4个小时,并尝试了所有推荐的方法,但似乎没有任何效果

我想使用memory/HttpImageHandler,而不是ImageLocation配置

我的Web.Config

    <appSettings>
    <!--<add key="ChartImageHandler" value="storage=file;timeout=20;dir=c:\TempImageFiles\;" />-->
    <add key="ChartImageHandler" value="storage=memory;timeout=20;deleteAfterServicing=false" />
  </appSettings>
  <system.webServer>
    <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>
  <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>
    <pages>
      <controls>
        <add tagPrefix="asp" namespace="System.Web.UI.DataVisualization.Charting"
          assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
      </controls>
    </pages>
    <compilation debug="true" targetFramework="4.0">
      <assemblies>
        <add assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
      </assemblies>
    </compilation>
    <customErrors mode="Off"/>
  </system.web>
<pre>
<add key="ChartImageHandler" value="storage=memory;timeout=20;deleteAfterServicing=true;Url=~\temp\"


有人知道我在哪里出错了,无法在我的服务器上运行吗?

这似乎是安全/权限问题。是否将图表保存到本地文件夹,然后为该文件夹的IIS用户和/或网络服务用户分配写权限。

在Web服务器上安装Microsoft图表控件,或尝试以下操作:


在IIS 7下运行时,还要检查HttpHandler是否已在web.config中的system.webServer中注册。

我找到了问题的答案,但我相信我的问题具体源于代码的运行方式

一旦我在我的ChartImageHandler的appSettings下设置了
privateImages=false
,我的图像就没有问题了,使用带有文件存储的ImageLocation或带有内存存储的HttpHandler

我查看了清单,发现我的代码没有以下内容:

  • 认证
  • 会话ID
  • 匿名ID
因此,
privateImages=true
的默认隐式设置阻止我下载图像。当我设置
privateImages=false
时,我没有遇到任何问题,图表工作正常。我将我的应用程序设置为使用Windows身份验证,并设置了
privateImages=true
,现在正在使用图像位置设置或HttpHandler设置生成我的图表


希望这是有帮助的。我知道我花了很长时间到处挖掘,结果一无所获。

这个配置对我来说很有用。您需要使用内存作为存储

< add key="ChartImageHandler" value="storage=memory;deleteAfterServicing=true;timeout=20;"/>



尝试此操作:将Version=4.0.0.0更改为Version=3.5.0.0



你没有用,它很棒而且免费。@bastardo现在没有了。我相信图表控件是内置在.NET4.0框架中的。处理程序出现在IIS管理器中处理程序映射下的应用程序列表中。虽然我试图不使用映像位置,但我确实为我的c:\TempImageFiles\文件夹授予了网络服务修改权限,并且映像确实放置在该文件夹中,这使我相信它可以按预期工作,但他们不会接受我的申请。执行此操作时,我似乎仍然遇到404错误。请尝试在IIS文件夹下创建“tempimagefile”文件夹,并尝试直接从“www.yourdomain.com/tempimagefile/char.jpg”之类的网站访问它,然后查看它是否有效。然后在您的网页中使用此位置。或者,更改应用程序设置中的ChartImageHandler规格,以在内存中而不是在文件中创建图像。我知道这是一篇有点陈旧的文章,但您能告诉我您将上述代码行插入的确切位置吗?在App.Config文件的部分中,我认为这是真正的答案。问题似乎是,如果您将存储保留为其默认值(“文件”),那么处理程序将尝试创建一个文件并将其提供给客户端。如果用户没有在char image handler应用程序设置中指定的服务器位置上创建文件的权限,那么整个操作都会失败。但我们可能需要的是服务器在内存中创建映像,并从内存中将其输出到客户端。不需要创建会引起文件授权问题的物理文件。这只适用于使用.Net 3.5的情况,不是吗?
<pre>
<add key="ChartImageHandler" value="storage=memory;timeout=20;deleteAfterServicing=true;Url=~\temp\"