2012年11月27日 星期二

Crystal Report 發佈至 Server 無法顯示問題

Crystal Reports for Visual Studio 2010 建立的 ASP.NET 的報表,在開發環境上可以正確顯示報表,但佈署至 Windows Server 2008 R2 的伺服器上時會有「應用程式中發生伺服器錯誤」的組態錯誤訊息,「無法載入檔案或組件 'CrystalDecisions.Web, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304' 或其相依性的其中之一。 系統找不到指定的檔案。」



錯誤訊息是無法載入檔案或組件,所以下載 Crystal Reports for Visual Studio 2010 Updates & Runtime Downloads 在伺服器上安裝 SAP Crystl Reports runtime engine for .NET Framwork4 (64-bit) 。

'/' 應用程式中發生伺服器錯誤。


組態錯誤

描述: 處理服務此要求所需的組態檔時發生錯誤。請檢視下列的特定錯誤詳細資訊,並適當修改您的組態檔。

剖析器錯誤訊息: 無法載入檔案或組件 'CrystalDecisions.Web, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304' 或其相依性的其中之一。 系統找不到指定的檔案。

原始程式錯誤:




行 26:         
行 27:         
行 28:         
行 29:         
行 30:         


原始程式檔: C:\inetpub\wwwroot\web.config 行: 28

組件載入追蹤: 下列資訊在確定為何無法載入組件 'CrystalDecisions.Web, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304' 時是有幫助的。


警告: 組件繫結記錄切換為 OFF。 若要記錄組件繫結失敗,請將登錄值 [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) 設為 1。 注意: 與組件繫結失敗記錄相關的效能會有部分負面影響。 若要關閉此功能,請移除登錄值 [HKLM\Software\Microsoft\Fusion!EnableLog]。



版本資訊: Microsoft .NET Framework 版本:2.0.50727.5466; ASP.NET 版本:2.0.50727.5456



安裝完 Runtime Engine 後,仍有以下錯誤訊息

'/' 應用程式中發生伺服器錯誤。


不支援的作業。由 JRC 引擎所處理的文件無法在 C++ 堆疊中開啟。

描述: 在執行目前 Web 要求的過程中發生未處理的例外情形。請檢閱堆疊追蹤以取得錯誤的詳細資訊,以及在程式碼中產生的位置。

例外詳細資訊: System.Runtime.InteropServices.COMException: 不支援的作業。由 JRC 引擎所處理的文件無法在 C++ 堆疊中開啟。

原始程式錯誤:
在執行目前 Web 要求期間,產生未處理的例外狀況。如需有關例外狀況來源與位置的資訊,可以使用下列的例外狀況堆疊追蹤取得。

堆疊追蹤:
[COMException (0x80041811): 不支援的作業。由 JRC 引擎所處理的文件無法在 C++ 堆疊中開啟。] CrystalDecisions.ReportAppServer.ClientDoc.ReportClientDocumentClass.Open(Object& DocumentPath, Int32 Options) +0 CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.Open(Object& DocumentPath, Int32 Options) +159 CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened() +492 [CrystalReportsException: 載入報表失敗。] CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened() +678 CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(String filename, OpenReportMethod openMethod, Int16 parentJob) +1750 CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(String filename) +219 CrystalReport._Default.Page_Load(Object sender, EventArgs e) in C:\Users\syssup\Documents\Visual Studio 2010\Projects\CrystalReport\CrystalReport\Default.aspx.cs:31 System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +25 System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +42 System.Web.UI.Control.OnLoad(EventArgs e) +132 System.Web.UI.Control.LoadRecursive() +66 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2428



版本資訊: Microsoft .NET Framework 版本:2.0.50727.5466; ASP.NET 版本:2.0.50727.5456


因安裝的是 SAP Crystl Reports runtime engine for .NET Framwork4 (64-bit) ,所以先將 IIS 中應用程式集區 DefaultAppPool 的 .NET Framwork 版本改為 v.4.0.30319,沒想是有錯誤!



不知什麼原因,和 machine.config 有多個區段定義重複,目前我的解決方法是將  web.config 中重複的區段註記或刪除,即可顯示報表程式。



若有更好的方法或較正確的解決,不要忘了留言哦!


1 則留言:

金蘋果 提到...

請教 小鯨魚 後來 DefaultAppPool 的 .NET Framwork 版本是改為多少??

machine.config 這是什麼檔案? 何謂重複?

非常感謝!!