2011-01-25 17 views
10

Kimlik doğrulama için WIF kullanan bir wcf web servisim var. Bu web servisinin sorumluluğu, bir rapor oluşturmak ve e-postayla göndermek. Eğer raporu veri ile işlerseniz sadece her şey yolundadır.Raporlama Hizmetleri LocalReport ve 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 

ben WIF kullanmayan bir WCF hizmeti aynı raporu, bu kadar net bir şekilde bir şey çalıştırabilirsiniz: Ben herhangi bir rapor parametreleri, rapor sabitleri, hatta sadece DateTime.Now aşağıdaki özel durum alıyorum eklerseniz Güvenlik ortamı arsız.

Bu sorunu çözmek için nasıl devam edeceğimi gerçekten bilmiyorum. Biri yardım edebilir mi? Teşekkürler!

cevap

16

Bu çalışır:

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

Ben gerçekten neden anlamıyorum. Raporun WIF'den alınamayacak izinleri aldığını anlıyorum, ancak bunların hangi izinleri veya neden gerektirdiğini anlamıyorum. Bu yüzden, cevabım "bir erkeğe balık verir", ancak daha derin bir sorunu açıklayarak başka biri "balık tutmayı öğretebilir"?

2

Windows Kimlik Doğrulaması ile bir MVC 3/WinForms karma uygulamasıyla aynı sorunla karşılaşıyordum. Raporun çalışması için gereken minimum izinleri belirlemeye çalışırken biraz zaman geçirdim. Benim için bu da çalışır: Ne kadar paranoyak bağlı

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

ReportViewer.LocalReport.SetBasePermissionsForSandboxAppDomain(permissionSet); 

, biraz daha aşağı kilitli izin kümesi ile daha güvenli hissedebilirsiniz.

Ne yazık ki, bu özel izinlerin neden gerekli olduğunun ve başkalarının farklı koşullar altında gerekip gerekmediğini bildiğim için hiçbir açıklamam yok, ama umarım bu yararlıdır.