2011-01-25 14 views
10

Ho un servizio web wcf che utilizza WIF per l'autenticazione. Parte della responsabilità di questo servizio web è di generare un report e inviarlo via email. Se visualizzo il report con dati, tutto va bene. Se includo eventuali parametri del report, costanti di relazione, o anche solo DateTime.Now ottengo la seguente eccezione:Reporting Services LocalReport e WIF

An error occurred during local report processing.Failed to load expression host assembly. Details: Request for the permission of type 'System.Security.Permissions.SecurityPermission, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed 

posso eseguire lo stesso report in un servizio WCF che non utilizza WIF, così chiaramente qualcosa sulla l'ambiente di sicurezza è fubarred.

Non so davvero come procedere per risolvere questo problema. Qualcuno può aiutare? Grazie!

risposta

16

Questo funziona:

var reportInstance = new LocalReport(); 
reportInstance.SetBasePermissionsForSandboxAppDomain(new PermissionSet(PermissionState.Unrestricted)); 

Io non capisco perché. Capisco che al report vengano concesse le autorizzazioni che non può ottenere da WIF, ma non capisco quali autorizzazioni siano o perché ne abbiano bisogno. Quindi, la mia risposta "dà a un uomo un pesce", ma può qualcun altro "insegnare a un uomo a pescare" spiegando il problema più profondo?

2

Mi trovavo ad affrontare lo stesso problema con un'app ibrida MVC 3/WinForms con autenticazione di Windows. Ho trascorso un po 'di tempo cercando di determinare le autorizzazioni minime necessarie per l'esecuzione del report. Per me, questo funziona anche:

var permissionSet = new PermissionSet(PermissionState.None); 
var flags = SecurityPermissionFlag.Execution | 
      SecurityPermissionFlag.ControlPrincipal; 
var permission = new SecurityPermission(flags); 
permissionSet.AddPermission(permission); 

ReportViewer.LocalReport.SetBasePermissionsForSandboxAppDomain(permissionSet); 

A seconda di come siete paranoici, si potrebbe sentire più al sicuro con un po 'più bloccato set di autorizzazioni.

Purtroppo non ho spiegazioni sul perché queste autorizzazioni particolari siano necessarie e non so se sono necessari altri in circostanze diverse, ma spero che ciò sia utile.

Problemi correlati