求助:ReportViewer.Reset()方法未找到,安装2005 redist后仍报错
问题:ReportViewer.Reset()方法未找到错误
未找到方法:'Void Microsoft.Reporting.WebForms.ReportViewer.Reset()'。
我在ASP ReportViewer控件上调用Reset()方法后,页面出现此错误。已从微软官网下载并安装ReportViewer.exe 2005 Redistributable,但问题依旧,恳请协助解决。
解决方案
这个问题的核心原因很明确:2005版本的ReportViewer控件根本没有Reset()方法,这个方法是从ReportViewer 2008(版本9.0.0.0)才开始引入的。你装了2005的运行库,但代码调用了更高版本才有的方法,自然会报错。下面是具体的解决步骤:
升级ReportViewer运行库和项目引用
- 先卸载已安装的ReportViewer 2005 Redistributable
- 下载并安装ReportViewer 2008或更高版本的运行库包(比如2010版也可以,根据你的项目.NET框架版本选择合适的)
- 打开你的ASP.NET项目,移除旧的
Microsoft.Reporting.WebForms和Microsoft.ReportViewer.Common引用,然后添加对应新版本的程序集引用
修正Web.config中的配置节点
确保Web.config里的程序集引用和HTTP处理器配置都对应新版本,以2008版为例:<!-- 在assemblies节点下添加/更新 --> <assemblies> <add assembly="Microsoft.ReportViewer.WebForms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/> <add assembly="Microsoft.ReportViewer.Common, Version=9.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/> </assemblies> <!-- 在httpHandlers节点下添加/更新 --> <httpHandlers> <add verb="*" path="Reserved.ReportViewerWebControl.axd" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/> </httpHandlers>清理项目并重新生成
右键项目选择“清理”,然后手动删除bin和obj文件夹里的所有文件,最后重新生成解决方案,避免旧版本程序集残留导致的冲突。如果暂时无法升级的替代方案
要是因为项目限制不能升级ReportViewer版本,你可以手动模拟Reset()的功能:// 手动重置ReportViewer状态,替代Reset()方法 reportViewer1.LocalReport.DataSources.Clear(); reportViewer1.LocalReport.ReportPath = string.Empty; reportViewer1.LocalReport.SetParameters(new List<Microsoft.Reporting.WebForms.ReportParameter>()); reportViewer1.LocalReport.Refresh();
内容的提问来源于stack exchange,提问作者Sakthi.D
相关产品推荐
相关产品推荐

