asp.net 2.0的水晶報表,在遷移機器的時候,如果目標機器沒有相應的程式集,在IIS中會報錯。
錯誤描述:Parser Error
Description: An error occurred during the parsing of a resource required to service this
request. Please review the following specific parse error details and modify your source file
appropriately.
Parser Error Message: Could not load file or assembly 'Microsoft.ReportViewer.WebForms,
Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its
dependencies. The system cannot find the file specified.
【解決方案】
進入你的開發使用機器的c:\windows\assembly目錄查看,是否有以下程式集安裝在GAC中():
由於資源管理員是使用了shell擴充來查看GAC中安裝的程式集,所以我們無法看到這些程式集當前部署的真實目錄在什麼地方。我們可以直接在命令列模式中進行查看,進入X:\windows\assembly目錄,然後尋找和水晶報表相關的程式目錄():
我們可以大致看到GAC的部署結構了。我們在瀏覽器中所看到的一個一個的assembly名稱,其實對應於assembly目錄下面的每一個目錄命名。進入具體的目錄,還有一級子目錄,這個目錄的命名,是根據發布到GAC的程式集的版本號碼加上後面的公開金鑰標記組成。(見的下面的紅色標記部分)
再進入子目錄,我們就可以看到公有部署的程式集,所存在的真正位置了。():
接下來的工作就好辦了,拷貝程式集到目標機器上,然後運行gacutil /i filename,將程式集安裝到GAC即可。需要拷貝的程式集如下:
1) Microsoft.ReportViewer.Common.dll
2) Microsoft.ReportViewer.ProcessingObjectModel.dll
3) Microsoft.ReportViewer.WebForms.dll