我从
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
有人能解释为什么会这样吗?解决方法是什么?
谢谢!