var reportInstance = new LocalReport();
reportInstance.SetBasePermissionsForSandboxAppDomain(new PermissionSet(PermissionState.Unrestricted));
I don't really understand why. I do understand that the report is being granted permissions it can't get from WIF, but I don't understand which permissions those are or why it needs them. So, my answer "gives a man a fish," but can someone else "teach a man to fish" by explaining the deeper issue?
LocalReport.SetBasePermissionsForSandboxAppDomain 方法
为Vs2010新添加的方法。使用提供的权限集设置沙盒应用程序域的基本权限。
沙盒应用程序域中的基本权限应用于自定义代码程序集和报表表达式的计算。请注意,此方法将所有现有基本权限集替换为提供的权限集。您应当确保提供的权限集包括 Execution权限。否则,将无法执行任何自定义代码程序集,且无法计算任何表达式。
如果您更改了权限,请确保不能使用 LocalReport 对象访问任何不可信的报表定义。在 .NET Framework 3.5(或启用了 LegacySecurityPolicy 的 .NET Framework 4 中),必须显式调用 ExecuteReportInSandboxAppDomain 方法才能切换到沙盒应用程序域模式。
http://msdn.microsoft.com/zh-cn/library/microsoft.reporting.webforms.localreport.aspx
http://stackoverflow.com/questions/4794968/reporting-services-localreport-and-wif