常见场景:
WebForm开发的水晶报表应用,本地调试正常,但是到了服务器上,工具栏可以正常显示,报表数据可以正常显示,唯一的问题就是图表的位置没有出现图,只是个红叉叉。
解决方法:
查看一下这个页面的HTML代码,在图表的位置,是类似于以下的一个图片
<img src="CrystalImageHandler.aspx?dynamicimage=cr_tmp_image_d587aabc-52c4-412b-b990-18dc8d0e8cb8.png" alt="图像" border="0" width="480px" height="288px" />
我们注意到CrystalImageHandler.aspx这个路径,是当前路径,但是该文件在我们的项目中又不存在。
查看能正常显示的图表项目的Web.config。会发现
<
system.web
>
< httpHandlers >
< add verb ="GET" path ="CrystalImageHandler.aspx" type ="CrystalDecisions.Web.CrystalImageHandler, CrystalDecisions.Web, Version=11.5.3700.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" />
</ httpHandlers >
</ system.web >
< httpHandlers >
< add verb ="GET" path ="CrystalImageHandler.aspx" type ="CrystalDecisions.Web.CrystalImageHandler, CrystalDecisions.Web, Version=11.5.3700.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" />
</ httpHandlers >
</ system.web >
这么一小节(你实际显示的跟这个版本可能会有所不同)。这个是添加图表后,程序自动在该配置文件中增加的一个httphandler。
出现此问题的原因多半是因为手工编辑web.config时,遗漏了这个部分。将你调试时使用的web.config的这一小节拷贝到发布机上即可。