2013-10-22 56 views
6

我有一個ASP.NET MVC前端,列出了SQL Azure Reporting Services上的報告。用戶選擇要運行的報告,並將該報告加載到另一個瀏覽器窗口中。問題是,當報告在某些瀏覽器(IE10 Win7上,例如)都被顯示如下消息運行:SQL Server Reporting Services - 運行報告時出錯(Azure網站部署問題?)

Method not found: 'Boolean Microsoft.ReportingServices.Common.DateTimeUtil.TryParseDateTime(System.String, System.IFormatProvider, System.DateTimeOffset ByRef, Boolean ByRef)'. 

Win7上使用Chrome的報告「半作品」 - 我得到的頂部欄有一個日期時間框和另一個下拉框,當我點擊運行按鈕時,我得到報告導航欄,但沒有報告的主體。我沒有收到上面的消息。

該網站發佈到Azure網站。我引用下面的DLL文件,並設置CopyLocal爲true:

Microsoft.ReportViewer.Common 
Microsoft.ReportViewer.WebForms 
Microsoft.ReportViewer.DataVisualization 
Microsoft.ReportViewer.ProcessingObjectModel 

公佈的報告工作正常,我的開發機器在那裏我有2012的ReportViewer安裝可再發行(11的版本控制)上。

所以,問題:

我從我的網站上公佈缺少什麼其他可再發行的dll? 什麼是Microsoft.ReportingServices.Common? 'ByRef'似乎意味着這是VB - 這是一個客戶端腳本組件嗎?我是否需要在客戶端計算機上安裝查看報告?

回答

0

這已固定我的問題,但我不得不承認,我不知道爲什麼...

的SizeToReportContent =「true」屬性只是添加到aspx頁面的標記,如:

<rsweb:ReportViewer ID="ReportViewer1" runat="server" SizeToReportContent="true" Font-Names="Verdana" Font-Size="8pt" Height="100%" ProcessingMode="Remote" WaitMessageFont-Names="Verdana" WaitMessageFont-Size="14pt" Width="100%"> 
    <ServerReport /> 
</rsweb:ReportViewer> 

神奇的是,這一切似乎工作。

7

同樣的問題發生在部署發生後,在IE和Firefox上未發現錯誤的方法,而在本地運行時一切正常。

Method not found: 'Boolean Microsoft.ReportingServices.Common.DateTimeUtil.TryParseDateTime(System.String, System.IFormatProvider, System.DateTimeOffset ByRef, Boolean ByRef)'. 

正在發生的事情是,在我們當地的bin文件還有的Microsoft.ReportViewer的dll比部署服務器的新版本。當部署服務器添加dll時,它從GAC中選擇與在本地使用不同的版本。版本11.0.2而不是11.0.33導致錯過匹配。在本地機器上更新dll的相同版本後,它解決了這個問題。有可能在您重新部署正確的dll之後,修復您的問題。

要驗證bin文件夾和部署文件夾中的dll版本,可以在導航到保存dll的文件夾後使用簡單的power shell腳本。

dir *.dll | %{ $_.VersionInfo } 
+0

+1 PowerShell的 – BozoJoe

+0

+1識別它是在「釋放」部分中的*細微*的差異可能導致問題的版本號。我有兩個不同的版本「11.x」,現在他們都是「11.0.3452.0」我的測試環境部署再次工作。我使用@AaronSieb的建議將四個DLL從GAC中提取出來,並將其添加到Web項目中,並強制引用「COPY LOCAL」 – Dib

0

我們遇到了同樣的問題。我想補充說,您需要將所有4個dll複製到服務器:

Microsoft.ReportViewer.Common.dll 
Microsoft.ReportViewer.WebForms.dll 
Microsoft.ReportViewer.DataVisualization.dll 
Microsoft.ReportViewer.ProcessingObjectModel.dll 
+0

並確保它們完全相同版本......「Major.Minor.Release.Build 「 我在兩個DLL」Microsoft.ReportViewer.DataVisualization「和」Microsoft.ReportViewer.ProcessingObjectModel「中的」發佈「有所不同,我有這個問題。 – Dib

4

crackhaus's answer指出我正確的方向。

下面是步驟的全序列我也跟着:

  1. 用下面的PowerShell命令檢查程序集的版本號在bin文件夾:

    dir *.dll | %{ $_.VersionInfo } 
    
  2. 發現一個ReportViewer程序集的版本號與其他兩個版本號不同。

  3. 我在本地GAC中檢查了該DLL的版本號,發現GAC DLL與我的bin文件夾中的其他兩個DLL匹配。

    我以前Option 2 described here訪問GAC(基本上是:PowerShell將C:\ WINDOWS \裝配\ GAC_MSIL \ <大會名稱> \ <大會主版本>),以上命令檢查版本號。

  4. 使用PowerShell(copy-item命令),我提取了該DLL,並將其放入該站點的BIN文件夾中。

0

我決定安裝微軟系統CLR類型爲Microsoft SQL Server 2012並根據MSDN article微軟報表查看器2012運行時到服務器。之後,我從網站bin目錄中刪除錯誤的程序集。

1

進入的NuGet安裝,從那裏得到Micorsoft.ReportViewer運行2012年和ReportViewer.Common 10.0

相關問題