在web 项目使用了ReportViewer时出错

本文解决了一个关于ReportViewer在不同机器上部署时出现的配置错误问题。主要原因是目标机器上缺少必要的DLL文件,通过将特定DLL文件复制到项目的bin目录中解决了这一问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我在web 项目使用了ReportViewer 呈现报表,在本机开发环境下,报表显示一切正常,当我把程序部署到别的机器上时,出错如下:

“/WebReport”应用程序中的服务器错误。 配置错误 说明: 在处理向该请求提供服务所需的配置文件时出错。请检查下面的特定错误详细信息并适当地修改配置文件。 

分析器错误信息: 未能加载文件或程序集“Microsoft.ReportViewer.WebForms, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”或它的某一个依赖项。系统找不到指定的文件。

源错误: 

行 17:         <compilation debug="true">            行 18:             <assemblies>            行 19:                 <add assembly="Microsoft.ReportViewer.WebForms, Version=8.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />            行 20:                 <add assembly="Microsoft.ReportViewer.Common, Version=8.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />            行 21:             </assemblies>

源文件: C:\inetpub\wwwroot\WebReport\web.config    行: 19 

程序集加载跟踪: 下列信息有助于确定程序集“Microsoft.ReportViewer.WebForms, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”无法加载的原因。

警告: 程序集绑定日志记录被关闭。            要启用程序集绑定失败日志记录,请将注册表值 [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD)设置为 1。            注意: 会有一些与程序集绑定失败日志记录关联的性能损失。            要关闭此功能,请移除注册表值 [HKLM\Software\Microsoft\Fusion!EnableLog]。            

版本信息: Microsoft .NET Framework 版本:2.0.50727.42; ASP.NET 版本:2.0.50727.210 


那是因为发布程序没配好,bin目录下没有找到相应的dll。

解决办法就是把:虚拟目录下的 所有dll 到拷贝到bin目录下。bin目录下一定要有以下3个文件。
1) Microsoft.ReportViewer.Common.dll 
2) ReportViewer.exe
3) Microsoft.ReportViewer.WebForms.dll
 
ReportViewer.exe在有VS的机器上的位置:C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\BootStrapper\Packages\ReportViewer

请移步:http://download.youkuaiyun.com/source/2881508 版本:1.0.0.1 完全兼容 前一个版本 升级更新 RMVIEWP.CAB、rmview1.0.0.1.jar(删除前一个版本的jar包,名称为:RMVIEW.JAR) 使用方法不变,无缝升级。 更新日志: 1. 修正部分用户使用中用到插件的分割符号,致使插件不能正常使用,本版中间使用xml格式,不会和用户使用的符号有冲突。 2. 重新构件了ocx,jar两个地方的源码,使结构更加清晰。 注意事项: 1. 这个版本的功能和前一个版本的功能是一样的,如果运行得可以就可以不用更新 声明: 任何个人或组织可以自由使用,可以任意修改、复制、发布,但要保留本人的声明以遵重本人的劳动成果,并且不能用于任何商业目的。 本人提供的是免费报表,不与商家争长短,但希望对你有用: 使用方法: 范例使用的是access数据库,首先在odbc 注册ReportDemo.mdb 数据源,名字随你喜好, 然后修改classes文件下的 db.properties 的连接。 然后把项目放在tomcat下运行既可: 起作用的关键文件:RMVIEWP.CAB 文件,客户端插件 Lib下的两个包:rmview1.0.0.1.jar,commons-logging.jar 使用接口: package common.rmview; /* * 设计的第一步,首先定义字段的类型, * 然后通过AddRow将结果加入缓存中 * */ import common.rmview.surperInterface.IDataSet; import common.rmview.until.Types; public interface IRMDataSet extends IDataSet { public void addField(String fieldName, Types.filedType type, int fieldLength, Boolean isNull);//1:将段类型加入 public void addField(String fieldName, Types type, int fieldLength);//1:将段类型加入,isNull 默认为 false public void AddRow(IRMDataRecord rmd);//2:在 IRMDataRecord实现类赋值完成一条记录后使用一次,循环加入. } package common.rmview; import common.rmview.surperInterface.IDataRecord; /* * 使用的第二步 * 通过这个接口设置结果集 */ public interface IRMDataRecord extends IDataRecord { public void SetValue(String fieldName,Object objValue); } package common.rmview; /* * 第三步: * 前面IDataSet,IRMDataRecord实现类完成后,通过此接口的实现类向html也面输出ie到ie以方便ocx的取值使用 */ public interface IRMEngine { final int rmf=1; final int rls=2; public void SetReportFile(String urlandFileName,int fileFormat);//1:设置报表路径及文件名称 public void AddClientDataSet(String dataSourceName,IRMDataSet rmd);//2:设置数据源名称以ocx使用,并把IRMDataSet实现的结果加入 public String CreateViewer();//3:生成在html页面的编码 } 具体的使用方法请参照 index.jsp 报表的使用方法请自己参照官方的文档 RMDesigner.exe 是个设计器(非本人开发,所有权属于其所在的组织),也可以使用delphi 的RM报表来设计 RM报表的设计请另行学习。 新建QQ群:29672297 有疑问请发邮件到 lujianfu123@yahoo.com.cn 下期计划:进行对 fastReport的封装。不过也要看呼声如何再决定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值