| ||||||
今天QA测试报表的时候发现,所有ActiveReport做的报表都显示一个红色的×,而完全不提示要下载控件. 我在自己的机器上看报表是没有问题,因为我已经安装了. 但是, 为什么放到服务器上面就不提示呢? 首先我想到的是, 服务器没有配置HttpHandler. 所以我先按照步骤配置好. 这里要注意的是, IIS5跟IIS6是有区别的. 具体如下: IIS5只需要对整个web site配置handler就可以,这个配置对于这个web site下面的所有站点都是有效的. IIS6不同,需要对没有虚拟路径配置,各个路径是独立的. 不受web site的整体配置影响. 配置好之后, 发现问题依旧. 于是我查看我的C:/WINNT/Downloaded Program Files/目录下面那些已经安装了的组件, 竟然发现Active Report Viewer2的CodeBase不是我的Application的路径. 而是我之前建了另外一个站点的路径. 于是我手动删除了那个组件. 然后run我的application,这时候,报表既不显示也不提示了,跟其他机器浏览的一样. 那到底是什么原因呢? 我决定研究一下我之前建的另外那个站点为什么可以提示我安装组件, 到底跟现在这个application有什么不同. 刚开始还是没有头绪, 我就直接把下面一段代码放到application的页面里面,试试它会不会自动下载. <OBJECT id="arv1" codeBase="arview2.cab" height="0" width="0" classid="clsid:8569D715-FF88-44BA-8D1D-AD3E59543DDE" VIEWASTEXT> <PARAM NAME="_ExtentX" VALUE="11218"> <PARAM NAME="_ExtentY" VALUE="7329"> </OBJECT> 奇怪的是, 这样的代码也不会提示. 真郁闷. 百无聊赖之下, 我突然想起了CodeBase, 是不是路径不对呢? 果然, 代码修改如下即可: <OBJECT id="arv1" codeBase="/myapp/arview2.cab" height="0" width="0" classid="clsid:8569D715-FF88-44BA-8D1D-AD3E59543DDE" VIEWASTEXT> <PARAM NAME="_ExtentX" VALUE="11218"> <PARAM NAME="_ExtentY" VALUE="7329"> </OBJECT> 另外,如果通过代码,也可以这样做 WebViewer1.CodeBase = "/myapp/arview2.cab"; 问题解决, 希望能帮助遇到类似问题的朋友. |