2011-11-14 97 views
11

使用ASP.NET 4.0,我通過實例化Microsoft.ReportingServices.RdlObjectModel.Report,設置Code屬性並使用RdlSerializer返回流來創建RDLC流。ASP.NET 4.0報表查看器控件和RDLC報表的安全錯誤

然後我傳遞一個流中的ReportViewer像這樣:

ReportViewer1.LocalReport.LoadReportDefinition(rdlcStream); 

如果我不設置Code屬性,我沒有得到任何錯誤,報告顯示正常,但是當我爲需要自定義代碼的報告設置Code屬性,我會看到下面提到的'RequestMinimum' is obsolete錯誤。

編譯表達式時發生意外錯誤。本地編譯器返回值:'[BC40000]'RequestMinimum'已過時:'程序集級聲明式安全性已過時,默認情況下不再由CLR強制執行。請參閱http://go.microsoft.com/fwlink/?LinkID=155570瞭解更多信息。'。'。

在Winforms應用程序中使用Report Viewer控件不會發生此錯誤。

有沒有人見過/解決了這個問題?

回答

5

我不知道這個錯誤的確切原因,但根據我的經驗,它與一個簡單的副本和從一個單元格到結果表格內的其他單元格的表達式相關,所有這些都是在佈局和組。

我建議您刪除任何表達式或公式,驗證您的報告是否在沒有任何錯誤消息的情況下執行,並且將所有表達式和公式一對一地重寫,檢查每個公式中您的報告是否正確打開。

這對我有用。

+1

+1從SSRS rdl複製到本地rdlc時,發生同樣的錯誤。我不得不刪除所有表達式(保持分組,標籤),然後重新創建它們。不確定它不喜歡什麼確切的聲明,但我已經有了兩次,這是我必須做的。 –

0

對我來說,當除去一切順利,我不知道爲什麼

0

對於那些另一個選項得到這個錯誤,並生成報告的標記在此行
<Value>=Globals!PageNumber + ' of ' + Globals!TotalPages</Value>
頁碼。

可能你們其中一個人<Value>標籤開頭爲"="符號,如果這不是一個表達式,你需要使用EvaluationMode="Constant"