Jam*_*ler 5 .net c# asp.net permissions reportviewer
我正在支持使用Microsoft.ReportViewer库的旧的ASP.NET Intranet Web应用程序.
运行时,报告将引发以下错误:
报告处理期间发生错误.
分组'list1_Details_Group'的Sort表达式包含错误:
请求类型的权限:'System.Security.Permissions.SecurityPermission,mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'失败.
我的所有研究都表明,这个问题源于应用程序没有必要的信任级别(所有相关的堆栈溢出问题都通过将信任级别设置为完全来解决),但是我的web配置定义了信任级别,所以我完全丢失了至于为什么会出现这种错误.
出于安全原因,我无法显示所有的Web配置,但大部分都可以在这里找到:http://pastebin.com/GdJhHDhH任何遗漏都被评论或存根.
将应用程序从窗体身份验证迁移到Windows身份验证后出现此问题.不一定相关,但很难忽视巧合.
这个问题在我的所有环境中都会发生:Local,Dev和Prod(缠绕prod回到Forms身份验证使这个工作).
该应用程序是用.Net 4编写的,C#
报告代码与Web应用程序位于不同的程序集中,Web应用程序引用报告程序集.
Web应用程序成功从与报告无关的应用程序的其他区域中的数据库中检索其他数据.
我对此有所了解,任何指导都会很棒.
尝试删除list1_Details_Group.完成此操作后,报告的另一部分将抛出相同的异常.
尝试使用Windows身份验证进行模拟.应用程序继续以相同的方式工作,同时在报告中抛出相同的异常.
强烈尝试命名应用程序中使用的所有程序集.否应用程序继续以相同的方式工作,同时在报告中抛出相同的异常.
尝试在IIS中使用"经典"托管管道.
小智 7
好吧,我知道这是一篇旧帖子。但我开始遇到完全相同的问题,并且找不到在任何地方发布的任何解决方案,因此我在这里发布我的解决方案。
\n\nASP.NET 4.5、ReportViewer 11。从表单身份验证迁移到 Windows 身份验证。报表中的排序在表单身份验证中工作正常,但在 Windows 身份验证中出现安全/权限错误。
\n\n我能够在 Windows Server 2012 R2 以及本地 Windows 10 开发环境 (Visual Studio 2015) 上重现上述内容。
\n\n我发现只有在使用如下SortExpression所示的跨多个列进行排序时才会遇到此问题:
=Fields!glp.Value & Fields!building_number.Value & Fields!room_number.Value\nRun Code Online (Sandbox Code Playgroud)\n\n如果我只是在没有排序表达式的情况下对字段进行简单排序,则一切正常。
\n\n显然,我的 \xe2\x80\x94 中有完全信任集和所有相关属性Web.config,因为它与表单身份验证一起使用。
要解决此问题,请按如下方式设置沙箱的权限:
\n\n=Fields!glp.Value & Fields!building_number.Value & Fields!room_number.Value\nRun Code Online (Sandbox Code Playgroud)\n\n\n\n注意:如果将参数传递给报表,您将得到相同的行为;同样的解决方案也适用。
\n
可能会发生一些问题。
\n\n第一个也是最明显的,看看错误,它说
\n\n\n\n\n分组 \xe2\x80\x98list1_Details_Group\xe2\x80\x99 的排序表达式包含错误
\n
让我们先解决这个问题。首先转到 Sorting 属性并找到关联的组list1_Details_Group。如果您已删除它并且问题仍然存在,那么您必须查看 .rdl 代码并查找list1_Details_Group。如果您找到它的实例,则意味着它仍然存在。把那些清理干净。
\n\n附加说明: \n您需要研究的第二件事是其他“变量”可能会影响您的设置。据报道,此问题可能是由第三方插件或 DLL 引起的。您是否添加了任何不属于原始环境、仅在切换到 Windows 身份验证时发挥作用的第三方 DLL?
\n\n希望这能以任何方式帮助您走上正轨。
\n