2010-03-23 5 views
4

Je suis en train de concevoir un rapport qui sera utilisé en mode local (un fichier RDLC) dans une application Winform. J'ai un assembly personnalisé avec une classe statique qui a certaines fonctions que je veux utiliser dans le rapport (en tant qu'expressions).Reporting Services: utilisation d'un assembly personnalisé avec un rapport local (RDLC)

J'ai trouvé toutes sortes d'aide pour ce faire avec les rapports RDL, mais je rencontre un problème de permissions avec mon rapport RDLC.

Je reçois l'erreur suivante lors de l'exécution: "Le rapport fait référence au module de code (mon module), qui n'est pas un assembly approuvé". Je sais que c'est une sorte de problème de sécurité de code, mais je ne sais pas quoi faire pour le réparer. La documentation que j'ai vu en ligne est destinée aux rapports RDL, et elle me demande de modifier un fichier de stratégie spécifique à SQL Server. J'utilise RDLC, donc il n'y a pas de serveur SQL impliqué. Que dois-je faire pour acquérir les autorisations appropriées?

Répondre

5

Essayez d'utiliser la méthode AddTrustedCodeModuleInCurrentAppDomain du ReportViewer.LocalReport Property (reportViewer.LocalReport.AddTrustedCodeModuleInCurrentAppDomain ("votre assemblée")).

Vérifiez également que vous utilisez l'attribut AllowPartiallyTrustedCallers avec votre assembly ([assembly: AllowPartiallyTrustedCallers]).

+1

C'était le truc! J'ai eu le AllowPartiallyTrustedCallers, mais j'ai manqué l'appel à AddTrustedCodeModuleInCurrentAppDomain. Incidemment, cette méthode a été déconseillée pour .Net 4.0, et il existe une nouvelle méthode pour le faire. Merci pour l'aide! – JMarsch

2

La méthode AddTrustedCodeModuleInCurrentAppDomain est obsolète pour .Net 4.0. Visual Studio 2010 désactiver l'appel de cette méthode. Mais il existe la méthode AddFullTrustModuleInSandboxAppDomain dans la propriété LocalReport de la classe ReportViewer (reportViewer.LocalReport.AddFullTrustModuleInSandboxAppDomain (myAssemblyStrongName)). Cela nécessite le nom fort de l'assemblée. Mon application s'exécute correctement à partir de Visual Studio mais j'obtiens l'erreur "Le rapport fait référence au module de code (mon module), qui n'est pas un assembly approuvé" lorsque je suis manuellement exécuté exe-file du dossier "bin". Qu'est-ce que ça peut être?

+0

http://devcoma.blogspot.nl/2010_05_01_archive.html – StefanHa