2010-03-23 196 views
4

我正在設計將在Winform應用程序中以本地模式(RDLC文件)使用的報告。我有一個靜態類的自定義程序集,它具有一些我想在報表中使用的函數(作爲表達式)。報告服務:使用具有本地(RDLC)報告的自定義程序集

我發現用RDL報告做這些的各種幫助,但我遇到了我的RDLC報告的權限問題。

我在運行時出現以下錯誤: 「報告引用了代碼模塊(我的模塊),它不是受信任的程序集」。

我知道這是某種代碼安全問題,但我不知道該如何解決它。我在線看到的文檔針對RDL報告,它指示我編輯SQL Server特定的策略文件。我正在使用RDLC,因此沒有涉及到sql服務器。我需要做些什麼來獲得適當的權限?

回答

5

嘗試使用AddTrustedCodeModuleInCurrentAppDomain方法的 ReportViewer.LocalReport Property(reportViewer.LocalReport.AddTrustedCodeModuleInCurrentAppDomain(「your assembly」))。

此外請確保您的程序集使用了AllowPartiallyTrustedCallers屬性([assembly:AllowPartiallyTrustedCallers])。

+1

這就是訣竅!我有AllowPartiallyTrustedCallers,但我錯過了對AddTrustedCodeModuleInCurrentAppDomain的調用。順便說一句,該方法已被棄用。NET 4.0,並有一個新的方法來做到這一點。謝謝您的幫助! – JMarsch 2010-03-24 15:59:25

2

對於.Net 4.0,AddTrustedCodeModuleInCurrentAppDomain方法已過時。 Visual Studio 2010禁用此方法的調用。但ReportViewer類的LocalReport屬性中有AddFullTrustModuleInSandboxAppDomain方法(reportViewer.LocalReport.AddFullTrustModuleInSandboxAppDomain(myAssemblyStrongName))。它需要組件的強名稱。我的應用程序在Visual Studio中執行得很好,但是當我從文件夾「bin」手動運行exe文件時,出現錯誤「報告引用了代碼模塊(我的模塊),這不是可信程序集」。它可能是什麼?

+0

http://devcoma.blogspot.nl/2010_05_01_archive.html – StefanHa 2016-02-26 13:09:01