使用Microsoft报表查看器:请求类型为'的权限;失败了
本文关键字:权限 失败 类型 报表 Microsoft 请求 使用 | 更新日期: 2023-09-27 18:08:25
问题总结
我支持旧的ASP。NET intranet web应用程序,使用的是Microsoft。ReportViewer图书馆。
运行时,报告抛出以下错误:
报表处理过程中出现错误。
组' list1_Details_Group '的Sort表达式包含一个错误:
请求类型的权限:"System.Security.Permissions。SecurityPermission, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.
我所有的研究都表明,这个问题是由于应用程序没有必要的信任级别(所有相关的堆栈溢出问题都通过将信任级别设置为full来解决),但是我的web配置将信任级别定义为full,所以我完全不知道为什么会发生此错误。
出于安全原因,我不能显示所有的web配置,但大部分可以在这里找到:http://pastebin.com/GdJhHDhH任何缺失的东西都已被注释或存根。
可能有用的详细信息
在将应用程序从表单身份验证迁移到Windows身份验证之后出现了这个问题。未必相关,但难以忽视的巧合。
这个问题发生在我所有的环境中:Local, Dev和Prod(将Prod绕回Forms Authentication使此工作)。
应用程序是用。net 4, c#编写的
报告代码位于与web应用程序不同的程序集中,并且web应用程序引用报告程序集。
web应用程序成功地从应用程序中与报表无关的其他区域的数据库中检索其他数据。
我对此束手无策,任何指导都会很好。
更新:尝试解决方案
尝试删除list1_Details_Group。当此操作完成后,报告的另一部分将抛出相同的异常。
尝试使用Windows身份验证模拟。应用程序继续以相同的方式工作,同时在报告中抛出相同的异常。
已尝试对应用程序中使用的所有程序集进行强命名。否应用程序继续以相同的方式工作,同时在报告中抛出相同的异常。
尝试使用"经典"
好吧,我知道这是一个旧的帖子。但我开始有完全相同的问题,找不到任何解决方案张贴在任何地方,所以我张贴我的解决方案在这里。
ASP。. NET 4.5, ReportViewer 11。从表单身份验证到Windows身份验证。排序在报告中工作良好的形式认证,但我得到一个安全/权限错误与Windows认证。
我能够在Windows Server 2012 R2以及我的本地Windows 10开发环境(Visual Studio 2015)上复制上述内容。
我发现的是,我只有在跨多个列排序时才会遇到这个问题,其中包含以下SortExpression
:
=Fields!glp.Value & Fields!building_number.Value & Fields!room_number.Value
如果我只是对一个字段做一个简单的排序,没有排序表达式,一切都很好。
我有完全信任集和所有相关的属性在我的Web.config
-显然,因为它与表单认证工作。
要解决这个问题,请按如下方式设置沙箱的权限:
rvReservations.ProcessingMode = ProcessingMode.Local;
LocalReport local_report = rvReservations.LocalReport;
local_report.ReportPath = "Reports''rReservations.rdlc";
local_report.DataSources.Clear();
local_report.SetBasePermissionsForSandboxAppDomain(new System.Security.PermissionSet(System.Security.Permissions.PermissionState.Unrestricted));
注意:如果你正在传递参数给你的报告,你会得到相同的行为;同样的解决方案也适用。
可能出现一些问题。
第一个也是最明显的,看一下错误,它说
分组' list1_Details_Group '的Sort表达式包含错误
让我们先解决这个问题。首先转到排序属性并找到关联的组list1_Details_Group。如果您已经删除了它,但问题仍然存在,那么您必须查看.rdl代码并查找list1_Details_Group。如果你找到了它的实例,就说明它还存在。清理干净。
其他说明:您需要查看的第二件事是其他"变量"可能会影响您的设置。据报道,这个问题可能是由第三方插件或DLL引起的。您是否添加了任何第三方dll,这些dll不是原始环境的一部分,只是在切换到Windows身份验证时才开始发挥作用?
希望这对你的学习有帮助。