我有一个使用WIF进行身份验证的wcf WIF服务。此and服务的部分职责是生成报告并通过电子邮件发送。如果我只呈现包含数据的报表,那么一切都很好。如果我包含任何报告参数、报告常量,或者仅仅是DateTime.Now,我就会得到以下异常:
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服务中运行相同的报告,所以很明显,关于安全环境的一些东西是模糊的。
我真的不知道如何解决这个问题。有人能帮上忙吗?谢谢!
发布于 2011-01-26 01:59:20
这是可行的:
var reportInstance = new LocalReport();
reportInstance.SetBasePermissionsForSandboxAppDomain(new PermissionSet(PermissionState.Unrestricted));我真的不明白为什么。我确实理解该报告被授予了无法从WIF获得的权限,但我不明白这些权限是什么,或者为什么它需要这些权限。所以,我的回答是“给人一条鱼”,但其他人能通过解释更深层次的问题来“教人钓鱼”吗?
发布于 2012-03-20 16:40:08
我在一个MVC3/WinForms混合应用程序中遇到了同样的问题,它带有Windows身份验证。我花了一些时间尝试确定运行报告所需的最低权限。对我来说,这也是可行的:
var permissionSet = new PermissionSet(PermissionState.None);
var flags = SecurityPermissionFlag.Execution |
SecurityPermissionFlag.ControlPrincipal;
var permission = new SecurityPermission(flags);
permissionSet.AddPermission(permission);
ReportViewer.LocalReport.SetBasePermissionsForSandboxAppDomain(permissionSet);根据你的偏执程度,你可能会觉得更多的锁定权限集更安全。
遗憾的是,我没有解释为什么这些特定的权限是必要的,也不知道在不同的情况下是否需要其他权限,但我希望这是有用的。
https://stackoverflow.com/questions/4794968
复制相似问题