代码之家  ›  专栏  ›  技术社区  ›  Chris McKenzie

为什么在指定自定义RoleProvider时,VS 2010 ASP.NET ReportViewer无法呈现参数?

  •  0
  • Chris McKenzie  · 技术社区  · 14 年前

    我从 http://gotreportviewer.com/ . 报告显示一些客户数据和“城市”参数。报表还使用“city”参数来过滤数据。除非我通过web.config启用自定义RoleProvider,否则此报表运行正常。我在自定义RoleProvider子类的所有方法中都设置了断点,并且创建了一个UserDecorator来包装默认的用户上下文,以便在那里设置断点。

    启用自定义RoleProvider时,报告无法正确呈现,但不会引发ReportError事件。此外,不会调用RoleProvider或自定义IPrincipal上的任何方法。以下是“输出”窗口中的调试输出:

    mscorlib.dll中出现“System.Security.SecurityException”类型的第一次异常

    Microsoft.ReportViewer.ProcessingObjectModel.dll中出现“System.Security.SecurityException”类型的第一次异常。

    Microsoft.ReportViewer.Common.dll中出现“System.Security.SecurityException”类型的第一次异常

    “Microsoft.ReportingServices.ReportProcessing.ReportProcessingException”类型的第一次异常出现在Microsoft.ReportViewer.Common.dll中

    “Microsoft.ReportingServices.ReportProcessing.ReportProcessingException”类型的第一次异常出现在Microsoft.ReportViewer.Common.dll中

    Microsoft.ReportViewer.Common.dll中出现“Microsoft.ReportingServices.ReportProcessing.ProcessingBortedException”类型的第一次异常。

    我的理解是,代码访问安全性在.NET 4.0中已被弃用,因此我对ReportProcessingException可能是什么有点困惑。我不认为这是一个信任问题,因为当不使用自定义RoleProvider时,报告执行得很好。我不明白为什么RoleProvider会影响任何东西,因为它的任何方法都没有被调用过。

    项目要求我使用内部RoleProvider。

    以下是演示项目的链接: http://cid-7c1d9f1e46206d43.office.live.com/self.aspx/Public/Blog%20Solutions/ReportViewerDemo.zip

    通过web.config启用或禁用RoleProvider

    有人能解释为什么会这样吗?解决方法是什么? 谢谢!

    1 回复  |  直到 14 年前
        1
  •  0
  •   Chris McKenzie    14 年前

    我找到了部分答案 here . 显然你得打电话 SetBasePermissionsForSandboxAppDomain 用于参数化报表。我还是不知道为什么。我想知道报告在做什么,这是一个要求。

    PermissionSet permissions = new PermissionSet(PermissionState.None);
    permissions.AddPermission(new FileIOPermission(PermissionState.Unrestricted));
    permissions.AddPermission(new SecurityPermission(SecurityPermissionFlag.Execution));
    
    ReportViewer1.LocalReport.SetBasePermissionForSandboxAppDomain(permissions);