- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我在本地模式下使用 Visual Studio 2008 中的 ReportViewer 控件,并将对象作为数据源。我的类映射到我的数据库中的数据表。在对象中,它根据需要加载相关对象。因此它会将引用保留为空,直到您尝试使用该属性,然后它会尝试自动从数据库中加载它。这些类使用 System.Data.SqlClient 命名空间。
当我与 Windows 窗体应用程序中的对象交互时,一切都按预期进行。但是当我传递要用作报表数据源的对象并尝试自动加载相关对象时,它失败了。该代码创建了一个 SqlConnection 对象,当我对其调用 GetCommand() 时,抛出以下异常:
[System.Security.SecurityException] {
"Request for the permission of type 'System.Data.SqlClient.SqlClientPermission, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed."
} System.Security.SecurityException
我已尝试搜索错误,但显示的所有结果都是针对在 SQL Server 或 ASP.Net 上运行的 CLR 程序集。在创建 SqlConnection 对象之前,我尝试在我的代码中添加以下调用(如搜索结果中所建议的那样),但它显然没有做任何事情:
System.Data.SqlClient.SqlClientPermission(System.Security.Permissions.PermissionState.Unrestricted).Assert();
有什么想法吗?
最佳答案
除了CuppM的回答。ExecuteReportInCurrentAppDomain
方法自 .NET4 以来已被弃用,应改用 LocalReport.SetBasePermissionsForSandboxAppDomain
,因为 ReportViewer 现在始终在沙盒域中执行:
PermissionSet permissions = new PermissionSet(PermissionState.None);
permissions.AddPermission(new FileIOPermission(PermissionState.Unrestricted));
permissions.AddPermission(new SecurityPermission(SecurityPermissionFlag.Execution));
ReportViewer1.LocalReport.SetBasePermissionsForSandboxAppDomain(permissions);
查看详情 here .
关于c# - 报表查看器 - 请求 SqlClientPermission 类型的权限失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/263578/
我在本地模式下使用 Visual Studio 2008 中的 ReportViewer 控件,并将对象作为数据源。我的类映射到我的数据库中的数据表。在对象中,它根据需要加载相关对象。因此它会将引用保
我有一个 WPF 网络应用程序,我正在尝试访问 SQL 2000 数据库,但出现以下错误: Request for the permission of type 'System.Data.SqlCli
我是一名优秀的程序员,十分优秀!