报告服务 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的主要内容,如果未能解决你的问题,请参考以下文章

使用 LocalReport 对象进行打印

winforms 的 .rdlc 数据报告中的外部图像

如何在解决方案中嵌入字体以用于带有 RDLC 的 PDF

Sql 报告服务和 Javascript

SQL 服务报告服务帐户

年终盘点篇:2017年度微服务调查报告出炉