【问题标题】:Reporting Services LocalReport and WIF报告服务 LocalReport 和 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 服务中运行相同的报告,因此很明显,有关安全环境的某些内容是不确定的。

我真的不知道如何着手解决这个问题。任何人都可以帮忙吗? 谢谢!

【问题讨论】:

    标签: wcf reporting service wif


    【解决方案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);
      

      根据您的偏执程度,您可能会觉得权限集更锁定更安全。

      遗憾的是,我无法解释为什么这些特定权限是必要的,也不知道在不同情况下是否需要其他权限,但我希望这是有用的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-21
        • 1970-01-01
        • 2019-01-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多