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報告服務,但是,確保一切仍由創建副本/第一備份因爲沒有回去工作。一旦你達到了這一點,以上所有都變得沒有必要,因爲我們這只是一個臨時解決方案。