2011-01-25 107 views
10

我有一個使用WIF進行身份驗證的wcf web服務。這個網絡服務的部分責任是生成一個報告併發送給它。如果我用數據呈現報表,只有一切都很好。如果我有任何報告參數,報告常數,甚至只是DateTime.Now我得到以下異常:Reporting Services LocalReport和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 

我可以運行在一個WCF服務的同一報告不使用WIF,這麼清楚一些有關安全環境受到干擾。

我真的不知道如何着手解決這個問題。誰能幫忙? 謝謝!

回答

16

這工作:

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

我真的不明白爲什麼。我明白,報告正被授予無法從WIF獲得的權限,但我不明白這些權限是哪些權限或爲什麼需要它們。所以,我的答案是「給男人一條魚」,但是可以通過解釋更深層次的問題,讓別人「教導一個男人去釣魚」嗎?

2

我正面臨與Windows身份驗證的MVC 3/WinForms混合應用程序相同的問題。我花了一些時間試圖確定報告運行所需的最低權限。對我而言,這也適用於:

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

ReportViewer.LocalReport.SetBasePermissionsForSandboxAppDomain(permissionSet); 

根據你是多麼偏執的人,你可能會覺得更安全一點的鎖定權限集。

不幸的是,我沒有解釋爲什麼這些特定的權限是必要的,不知道是否需要其他情況下的其他人,但我希望這是有用的。