ASP.NET Charting Control无法在生产服务器上运行

时间:2011-10-28 19:20:41

标签: asp.net mschart

我有一个严重依赖图表的应用程序,目前图表可以在ASP.Net开发服务器上运行,但是当我尝试发布到我的服务器(Win 2008 Server R2,IIS 7)时,图表不会出现。

使用Firebug,我可以看到对ChartImg.axd的调用返回404,我得到的只是IE中的空白图像持有者,或者在Firefox中没有。到目前为止,我已经搜索了大约3到4个小时,并且已经尝试了所有推荐的内容,但似乎没有任何工作。

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

我的网站.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>

有没有人有任何想法让我不能在服务器上工作?

6 个答案:

答案 0 :(得分:6)

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

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

我查看了商品here并意识到我的代码没有以下内容:

  • 验证
  • 的SessionID
  • AnonymousID

所以privateImages=true的隐式默认设置让我无法下载我的图片。当我设置privateImages=false时,我没有遇到任何问题,图表工作正常。我将我的应用程序设置为使用Windows身份验证,并设置privateImages=true,现在使用图像位置设置或HttpHandler设置生成我的图表。

希望这很有帮助。我知道我花了很长时间四处寻找并无处可去。

答案 1 :(得分:3)

这个配置对我有用。您需要将内存用作存储空间。

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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

在您的网络服务器上安装Microsoft图表控件或试试这个:

ASP.Net Chart Control On Shared Hosting Environment

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

答案 4 :(得分:0)

  <controls>
        <add tagPrefix="asp" namespace="System.Web.UI.DataVisualization.Charting"
          assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
  </controls>

试试这个:将Version = 4.0.0.0更改为Version = 3.5.0.0

答案 5 :(得分:0)

试试这个在web.config运行时错误

的情况下解决了
<pre>
<add key="ChartImageHandler" value="storage=memory;timeout=20;deleteAfterServicing=true;Url=~\temp\"
     

/&GT;