我有一个严重依赖图表的应用程序,目前图表可以在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>
有没有人有任何想法让我不能在服务器上工作?
答案 0 :(得分:6)
我找到了问题的答案,但我相信我的问题主要源于我的代码运行方式。
在我的ChartImageHandler的appSettings下设置privateImages=false
后,我的图像没有问题,使用带文件存储的ImageLocation或带内存存储的HttpHandler。
我查看了商品here并意识到我的代码没有以下内容:
所以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;