.NET DLR和SecurityException的

| 为了正常工作,DLR需要哪些必填项“ 0”? 我们已经在沙盒脚本环境中启用了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)
通常,ѭ3包含大量详细信息,准确地指定了导致其失败的权限,但是在这种情况下,我们并没有得到它-非常烦人。 PS:如果我在我们的沙盒上运行了相同的测试,并被临时授予了“ 4”分,那么问题就消失了。但是显然我们确实希望将其锁定为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,则可以复制类似的异常。即使使用不同的调用堆栈,也可以看到此问题,无论是针对动态变量还是强类型变量进行调用。     

要回复问题请先登录注册