簡體   English   中英

Visual Studio 2010的Crystal Reports錯誤

[英]Crystal Reports for Visual Studio 2010 Error

我試圖從使用ASP.NET 4.0和Visual Studio 2010構建的Web應用程序中運行水晶報表。我已經從SAP網站( http://www.businessobjects.com/jump/xi/crvs2010)安裝了以下報表/us2_default.asp

1)SAP Crystal Reports,Visual Studio 2010的版本-標准EXE安裝程序包,可將軟件安裝到Visual Studio IDE中。

2)適用於.NET Framework 4(64位)的SAP Crystal Reports運行時引擎

我有一個名為Reports.aspx的頁面,其中有一個水晶報表查看器控件

 <CR:CrystalReportViewer ID="rptViewer" runat="server" AutoDataBind="true" />

在Reports.aspx.cs文件中,我具有以下代碼:

protected override void OnPreRender(EventArgs e)
{
    ReportDocument report = new ReportDocument();
    var path = Server.MapPath("Reports/Sample.rpt");
    report.Load(path);
    report.SetDatabaseLogon("username", "password", "servername", "databasename");
    rptViewer.ReportSource = report;
}

在report.Load(path)行上,出現以下錯誤:

不支持的操作。 JRC引擎處理的文檔無法在C ++堆棧中打開。

我怎樣才能解決這個問題?

我也遇到了同樣的問題,我的問題是報告路徑無效,可能是您遇到了同樣的問題,請檢查Server.MapPath(“ Reports / Sample.rpt”)返回有效路徑嗎?

確保該報告位於app_code文件夾中,而不是初始化reportdocument並在其中加載報告,請初始化該報告的新實例。

Sample report = new Sample();

這對我有用

您將需要修改.rpt文件中的兩個屬性:

  1. 默認情況下,“ 構建操作”設置為“嵌入式資源”。 將其更改為“ Content ”。
  2. 默認情況下,“ 復制到輸出 ”設置為“不復制”。 將其更改為“ 始終復制 ”。

重建,構建部署程序包並發布。 做完了!

注意:下面,術語“ WebSite”是指IIS中的實際網站節點,而不是網站中的虛擬目錄。

問題根源:應用程序沒有可訪問的“ aspnet_client”文件夾。
發生這種情況有幾個原因:

  1. 由於SAP CR安裝程序似乎將aspnet_client文件夾安裝在... \\ inetpub \\ wwwroot \\文件夾中,因此,如果您的網站物理路徑不是... \\ inetpub \\ wwwroot,則您的應用程序將無權訪問aspnet_client文件夾。
  2. 如果將aspnet_client文件夾移至網站物理路徑的頂層或從其刪除,則IIS應用程序將無權訪問該文件夾。

問題解決方案(對於Windows Server 2008 R2)

  1. 轉到服務器上的IIS管理器
  2. 展開運行您的應用程序的WebSite的樹視圖節點
  3. 查看緊鄰網站節點下的級別,並確保您看到“ aspnet_client”文件夾。
  4. 如果您確實看到該文件夾​​,則可能根本原因不是您的問題所在。
  5. 如果看不到該文件夾​​,請在服務器的硬盤驅動器中搜索該文件夾並將其復制到網站的“物理”路徑。
  6. 右鍵單擊“網站”節點,然后從彈出菜單中單擊“刷新”。
  7. 現在,您應該在網站節點正下方的級別看到aspnet_client文件夾,並且應用程序中的報告應該可以正常工作。

當我將網站轉換為Web應用程序時遇到了這種情況。 該報告可以在我的開發機上正常運行,但不能在服務器上運行。 然后我意識到服務器上缺少 rpt文件!

默認情況下,報告文件被視為嵌入式資源,並且在發布Web應用程序時不會被復制。 我只是單獨更改了它們,重新發布了網站,一切都恢復了。

如果我在Crystal Reports Designer中錯誤地打開了報告文件,則報告加載也會失敗。

此錯誤是真正的解決方法,並且似乎有許多可能的前提。 幸運的是,我在自己的特定版本上只浪費了一天:

ReportDocument.Load()也制作本地臨時副本。 (這可能僅在從網絡驅動器位置進行加載的情況下進行,對於本地加載情況,我沒有進行測試。)

如果發生加載的用戶上下文沒有權限在本地創建臨時文件,則Load將失敗,並出現同樣非常無用的錯誤。


另外,我最終使用Process Monitor對此進行了診斷。 這也可能對您有幫助。

  1. 將“水晶報表引擎”重新安裝到服務器

  2. 構建操作設置為“內容”。

它對我來說完美。

請確保您的報告rpt文件位於其原始文件夾中。 在將MVC網站“發布”到IIS之后,我首先遇到了相同的錯誤。 我沒有意識到“發布”沒有將rpt文件放入包中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM