c# – .NET DLR和SecurityException
发布时间:2020-12-15 17:16:08 所属栏目:百科 来源:网络整理
导读:为了正常运行,DLR需要哪些强制性PermissionSet项? 我们在沙盒脚本环境中启用了DLR.但是有些代码如下…… dynamic foo = someobjectfoo.FooBar(); …只是导致一个相当模糊和“未完成”的异常被抛出,如下所示: System.Security.SecurityException: Request f
为了正常运行,DLR需要哪些强制性PermissionSet项?
我们在沙盒脚本环境中启用了DLR.但是有些代码如下…… dynamic foo = someobject foo.FooBar(); …只是导致一个相当模糊和“未完成”的异常被抛出,如下所示: System.Security.SecurityException: Request failed. at CallSite.Target(Closure,CallSite,Object ) at System.Dynamic.UpdateDelegates.UpdateAndExecuteVoid1[T0](CallSite site,T0 arg0) at AcmeCorp.AcmeRocket.Workflow.Scripting.Assemblies.WorkflowScriptImplementation.Test() at AcmeCorp.AcmeRocket.Workflow.Scripting.Assemblies.WorkflowScriptImplementation.__action_activity_4397110c5d7141a6802a070d3b942b77() --- End of inner exception stack trace --- at AcmeCorp.AcmeRocket.Workflow.Scripting.WorkflowScriptProxy.Invoke(String method_name) at AcmeCorp.AcmeRocket.Workflow.Execution.Executors.ActionActivityExecutor.Execute(WorkflowInstance wi,ActionActivity activity) at AcmeCorp.AcmeRocket.Workflow.Execution.ActivityExecutorBase.Execute(WorkflowInstance wi,Activity activity) at AcmeCorp.AcmeRocket.Workflow.Execution.WorkflowExecutor.ExecuteActivity(WorkflowInstance wi,Activity activity) at AcmeCorp.AcmeRocket.Workflow.Execution.WorkflowExecutor.Execute(WorkflowInstance wi,Nullable`1 branch_index) 通常SecurityException包含一系列详细信息,准确指定哪些权限导致它失败,但在这种情况下我们没有得到 – 非常烦人. PS:如果我使用我们的沙箱临时授予PermissionSet(PermissionState.Unrestricted)运行相同的测试,那么问题就会消失.但显然我们真的想把它锁定到DLR所需的非常具体的权限集. PPS:当前(失败)PermissionSet创建如下: var ps = new PermissionSet(PermissionState.None); ps.AddPermission(new SecurityPermission(SecurityPermissionFlag.Execution)); ps.AddPermission(new ReflectionPermission(ReflectionPermissionFlag.RestrictedMemberAccess)); 谢谢. 解决方法
您没有获得更详细的安全性异常的原因是它在具有受限CAS权限的上下文中被读取.如果在完全受信任的上下文中调用其ToString方法,则可以阅读完整的异常详细信息.
也就是说,我无法在简单的沙盒AppDomain场景中重现同样的问题,所以我想知道你的异常是否真的是由于DLR的使用.如果您尝试在同一权限集下的强类型目标实例上调用相同的方法,会发生什么? 例如,如果被调用的方法具有不受限制的权限集的LinkDemand,我可以重新发出类似的异常.无论是针对动态变量还是强类型变量的调用,都可以看到此问题,尽管具有不同的调用堆栈. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |