3

我遇到ReportViewer控件的版本问题。我使用的是visual studio 2010,但我认为我需要使用2005报表查看器,因为我使用的是SQL 2005.所以,我将webconfig文件设置为指向2005 ReportViewer .dlls,一切正常,然后VS编辑网页.config指向2010版的dll。下面是相关的网络配置文件分段设置什么,我认为是正确的:ReportViewer控制版本冲突

<httpHandlers> 
    <add path="elmah.axd" verb="POST,GET,HEAD" type="Elmah.ErrorLogPageFactory, Elmah" /> 
    <add path="Reserved.ReportViewerWebControl.axd" verb="*" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 
    validate="false" /> 
</httpHandlers> 

<compilation> 
    <assemblies> 
    <add assembly="Microsoft.ReportViewer.WebForms, Version=8.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" /> 
    <add assembly="Microsoft.ReportViewer.Common, Version=8.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" /> 
    </assemblies> 
    <buildProviders> 
    <add extension=".rdlc" type="Microsoft.Reporting.RdlBuildProvider, Microsoft.ReportViewer.WebForms, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> 
    </buildProviders> 
</compilation> 

<system.webServer> 
<validation validateIntegratedModeConfiguration="false" /> 
<handlers> 
    <add name="ReportViewerWebControlHandler" preCondition="integratedMode" verb="*" path="Reserved.ReportViewerWebControl.axd" 
     type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> 
</handlers> 

因此,运行它和它的工作了几次后,它会自动更改HTTP处理程序的版本为10.0。 0.0。我怎样才能防止这一点?

回答

1

这不是一个确切的答案给你的问题,但可能是解决方案。
没有必要使用旧版本的报告查看器。它在服务器上是独立的。尤其是使用.rdlc(客户端报告)时,您只提供数据,报告不知道服务器。

3

写入web.config的内容由您在项目中使用的引用定义。

在我的Visual Studio 2008项目,我有以下引用:

  • Microsoft.ReportViewer.Common.dll(版本9.0.0.0)
  • Microsoft.ReportViewer.WebForms.dll(9.0版。 0.0)

所以在我的配置我看到:

<system.web> 
    ... 
    <compilation> 
    ... 
    <buildProviders> 
     <add extension=".rdlc" type="Microsoft.Reporting.RdlBuildProvider, Microsoft.ReportViewer.Common, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />   
    </buildProviders> 
    </compilation> 
    ... 
    <httpHandlers> 
    <add verb="*" path="Reserved.ReportViewerWebControl.axd" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" validate="false"/> 
    </httpHandlers> 

当我看到在t他提供项目引用我有三个:

  • 版本8.0.0.0
  • 版本9.0.0.0
  • 版本10.0.0.0

我想这是因为我的Visual Studio 2005,2008年,并安装2010年,但也许安装单个报告查看器可再分发版将提供相同的选择:

NB我已经在版本号上做出了最好的猜测;如果你知道的更好,请纠正我。

1

可以使用win forms应用程序访问SQL报告。使用VS2010和ReportViewer组件版本= 9.0.0.0开发。

步骤如下:

访问SQL 2005年的报告,你将不得不使用的报表查看器组件的版本= 9.0.0.0,如上所述。因此,您需要在要呈现报表的.aspx页面或其继承的母版页中使用此页面:

Register assembly =“Microsoft.ReportViewer.WebForms,Version = 9.0.0.0,Culture = neutral,公钥= b03f5f7f11d50a3a”命名空间= “Microsoft.Reporting.WebForms” 的TagPrefix = “rsweb”

<form id="foo" runat="server"> 
    <div> 
     <asp:ScriptManager ID="ScriptManager1" runat="server"> 
     </asp:ScriptManager> 
     <rsweb:ReportViewer ID="ReportViewer1" runat="server" ProcessingMode="Remote" Width="950px" 
        Height="600" BorderColor="Gainsboro" BorderStyle="Solid" BorderWidth="1px"> 
     <ServerReport ReportPath="/foo/foo/FooReport" 
       ReportServerUrl="http://foo/ReportServerSQL2005" /> 
    </rsweb:ReportViewer> 
… 

您可能需要更改web.conig到的ReportViewer组件的任何其他版本的引用以及因为VS2010和更新版本将默认使用ReportViewer组件的新版本

例如

<add extension=".rdlc" type="Microsoft.Reporting.RdlBuildProvider, Microsoft.ReportViewer.WebForms, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" /> 

更改为

<add extension=".rdlc" type="Microsoft.Reporting.RdlBuildProvider, Microsoft.ReportViewer.WebForms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> 

只要搜索版本= 8.0.0.0和Version = 10.0.0.0等整套解决方案,并更改这两个版本=和公钥=

您还需要在项目中引用reportviewer组件9.0.0.0的.net选项卡,并删除对任何其他版本的引用。

值得注意的是,当使用VS中包含源代码和设计视图的.aspx页面时,它会在设计视图中显示错误创建控件 - ReportViewer1。从我读过的内容来看,这是组件的一个错误,但它在所有主流浏览器中都能正常工作。

另外,如果你打算从工具拖动零部件到设计界面上,你最有可能将需要添加的9.0.0.0版本,并确保它是这一个大家使用。

我以前在这里回答了这个问题:

http://forums.asp.net/p/1985629/5691326.aspx?VS2010+ReportViewer+with+SQL+2005

然而,我的应用程序是.NET 3.5 MVC2应用程序,但我仍然能够得到它的渲染SQL2005报道,经过一番相当大的努力。

理想情况下,你应该到2008年更新2005 SQL报告服务,但是,确保一切仍由创建副本/第一备份因为没有回去工作。一旦你达到了这一点,以上所有都变得没有必要,因为我们这只是一个临时解决方案。