报告服务 LocalReport 和 WIF
Posted
技术标签:
【中文标题】报告服务 LocalReport 和 WIF【英文标题】:Reporting Services LocalReport and WIF 【发布时间】:2011-06-15 06:19:05 【问题描述】:我有一个使用 WIF 进行身份验证的 wcf 网络服务。此 Web 服务的部分职责是生成报告并通过电子邮件发送。如果我用数据呈现报告,那么一切都很好。如果我包含任何报告参数、报告常量,甚至只是 DateTime。现在我得到以下异常:
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
我可以在不使用 WIF 的 WCF 服务中运行相同的报告,因此很明显,有关安全环境的某些内容是不确定的。
我真的不知道如何着手解决这个问题。任何人都可以帮忙吗? 谢谢!
【问题讨论】:
【参考方案1】:这行得通:
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);
根据您的偏执程度,您可能会觉得权限集更锁定更安全。
遗憾的是,我无法解释为什么这些特定权限是必要的,也不知道在不同情况下是否需要其他权限,但我希望这是有用的。
【讨论】:
以上是关于报告服务 LocalReport 和 WIF的主要内容,如果未能解决你的问题,请参考以下文章